繁体   English   中英

如何从 post 标记的句子中提取具有多种模式的块?

[英]How to extract chunks with multiple patterns from pos tagged sentences?

给定一个在 nltk 中使用 pos_tag function 进行 pos 标记的输入句子:

[('Veer', 'NNP'), ('Singh', 'NNP'), ('Rathore', 'NNP'), ('auctioned', 'VBD'), ('his', 'PRP$' ), ('gigantic', 'JJ'), ('house', 'NN'), ('in', 'IN'), ('New', 'NNP'), ('York', 'NNP' ), ('.', '.')]

我需要提取遵循某种模式的短语。 例如,“NNP NNP”或“JJ NN”。 可以有“n”不。 我们可能想要提取的模式。 例如,这里我们需要 2 个模式,即“NNP NNP”和“JJ NN”。

对于上面输入的句子,我想要的 output 是以下短语的列表:

output:

['Veer Singh Rathore','巨大的房子','纽约']

我尝试过这样的事情:

> grammar = (''' Chunk:{<JJ><NN>|<NNP>+<NNP>} ''')
> 
> def pos_and_chunking(question):
>     words = word_tokenize(question)
>     pos_words = pos_tag(words)
>     chunkParser = RegexpParser(grammar)
>     chunked_phrases = chunkParser.parse(pos_words)
>     chunked_phrases.draw()
>     for subtree in chunked_phrases.subtrees():
>         print(subtree)

但是我得到的 output 是一棵树的形式。

Output:

(S (Chunk Veer/NNP Singh/NNP Rathore/NNP) 拍卖/VBD his/PRP$ (Chunk gigantic/JJ house/NN) in/IN (Chunk New/NNP York/NNP)./.) (Chunk Veer/ NNP Singh/NNP Rathore/NNP) (Chunk gigantic/JJ house/NN) (Chunk New/NNP York/NNP) 在此处输入图像描述

如何解决?

我参考了这个链接进行分块: https://www.codespeedy.com/chunking-rules-in-nlp/

如果您期望一个带有语法标签的简单标记列表,那么您可以简单地展平树:忽略结构,只过滤掉带有标记的标记,然后使用结果列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM