过滤标签集并制作双字母序列

  • 本文关键字:标签集 过滤 python regex
  • 更新时间 :
  • 英文 :


抱歉用同一个文本文件提问。下面是我的工作文本文件字符串。

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']]

最新更新