我有一个文本文件,其中包含多个列表;每个列表都包含单词/词性标记对的元组,如下所示:
[('reviewtext', 'IN'), ('this', 'DT'), ('movie', 'NN'), ('was', 'VBD'), ('great', 'JJ'), ('and', 'CC'), ('fun', 'NN'), ('i', 'PRP'), ('really', 'RB'), ('enjoyed', 'VBD'), ('this', 'DT'), ('awesome', 'NN'), ('movie', 'NN')]
[('reviewtext', 'IN'), ('it', 'PRP'), ('was', 'VBD'), ('fun', 'VBN'), ('but', 'CC'), ('long', 'RB')]
[('reviewtext', 'IN'), ('i', 'PRP'), ('loved', 'VBD'), ('the', 'DT'), ('new', 'JJ'), ('movie', 'NN'), ('my', 'PRP$'), ('brother', 'NN'), ('got', 'VBD'), ('sad', 'JJ'), ('and', 'CC'), ('unhappy', 'JJ'), ('at', 'IN'), ('the', 'DT'), ('end', 'NN')]
我需要提取所有形容词连词形容词对,或所有JJ-CC-JJ对(仅限单词,不包括pos标签)。对于这个例子,最终的输出应该是一个包含所有模式的列表:
['great and fun', 'sad and unhappy']
我使用了以下代码来标记文本:
```html
我使用了以下代码来标记文本:
``` with open("C:\\Users\\M\\Desktop\\sample dataset.txt") as fileobject:
for line in fileobject:
line = line.lower() #lowercase
line = re.sub(r'[^\w\s]','',line) #remove punctuation
line = nltk.word_tokenize(line) #tokenize
line = nltk.pos_tag(line) #POS tag
fo = open("C:\\Users\\M\\Desktop\\movies1_complete.txt", "a")
fo.write(str(line))
fo.write("\n")
fo.close()
但是如何提取上述模式中的单词呢?我在这里查看和查看,但它们没有解释如何提取特定的pos模式。提前致谢。
nltk.sent_tokenize
将它们分成句子,然后对每个结果句子使用nltk.word_tokenize
进行处理。 - alexis