抱歉用同一个文本文件提问。下面是我的工作文本文件字符串。
The/at Fulton/np-tl County/nn-tl Grand/jj-tl Jury/nn-tl said/vbd Friday/nr an/at investigation/nn of/in Atlanta's/np$ recent/jj primary/nn election/nn produced/vbd
如您所见,此字符串由"word / its tag"
格式组成。从这个字符串中,我只想过滤"noun + adjective"
序列并将它们制作成双字母。例如,"Grand/jj-tl Jury/nn-tl"
是我想要的确切单词序列。(nn
表示名词,jj
表示形容词,"-tl"
等辅助词是有关标签的其他信息。
也许这将是一件容易的事。我首先使用正则表达式进行过滤。下面是我的代码。
import re
f = open(textfile)
raw = f.read()
tag_list = re.findall("w+/jj-?w* w+/nn-?w*", raw)
print tag_list
此代码为我提供了确切的单词列表。但是,我想要的是双字母数据。该代码仅给我单词列表,例如这样。
['Grand/jj-tl Jury/nn-tl', 'recent/jj primary/nn', 'Executive/jj-tl Committee/nn-tl']
我希望转换这些数据,如下所示。
[('Grand/jj-tl, Jury/nn-tl'), ('recent/jj ,primary/nn'), ('Executive/jj-tl , Committee/nn-tl')]
即双元数据列表。我需要你的建议。
一旦你找到了tag_list
之后,只需使用列表理解就应该很容易:
>>> tag_list = ['Grand/jj-tl Jury/nn-tl', 'recent/jj primary/nn', 'Executive/jj-tl Committee/nn-tl']
>>> [tag.replace(' ', ', ') for tag in tag_list]
['Grand/jj-tl, Jury/nn-tl', 'recent/jj, primary/nn', 'Executive/jj-tl, Committee/nn-tl']
在您最初的演示中,我不确定您为什么有('Grand/jj-tl, Jury/nn-tl')
,我也不确定您为什么要使用逗号加入这些双拼图。
其中内部列表包含双字母数据:
>>> [tag.split() for tag in tag_list]
[['Grand/jj-tl', 'Jury/nn-tl'], ['recent/jj', 'primary/nn'], ['Executive/jj-tl', 'Committee/nn-tl']]