dmv*_*nna 8 python search nlp nltk
我有一堆不相关的段落,我需要遍历它们以找到类似的事件,例如,在我查找的搜索中object
falls
,我找到True
包含以下内容的文本的布尔值:
并False
为:
我能够使用NLTK来tokenise
,tag
并得到WORDNET synsets
,但我发现很难找出如何适应NLTK的运动部件在一起,以实现所期望的结果.我应该chunk
在寻找同义词之前吗?我应该写一个context-free grammar
?从treebank标签翻译成Wordnet语法标签时是否有最佳实践?在nltk书中没有解释这一点,我在nltk食谱上找不到它.
在答案中包含大熊猫的答案的奖励积分.
[编辑]:
一些代码来开始
In [1]:
from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
from pandas import Series
def tag(x):
return pos_tag(word_tokenize(x))
phrases = ['Box fell from shelf',
'Bulb shattered on the ground',
'A piece of plaster fell from the ceiling',
'The blame fell on Sarah',
'Berlin fell on May',
'The temperature fell abruptly']
ser = Series(phrases)
ser.map(tag)
Out[1]:
0 [(Box, NNP), (fell, VBD), (from, IN), (shelf, ...
1 [(Bulb, NNP), (shattered, VBD), (on, IN), (the...
2 [(A, DT), (piece, NN), (of, IN), (plaster, NN)...
3 [(The, DT), (blame, NN), (fell, VBD), (on, IN)...
4 [(Berlin, NNP), (fell, VBD), (on, IN), (May, N...
5 [(The, DT), (temperature, NN), (fell, VBD), (a...
dtype: object
Run Code Online (Sandbox Code Playgroud)
小智 7
我会这样做的方式如下:
使用nltk查找名词后跟一个或两个动词.为了符合您的确切规范,我将使用Wordnet:应该找到的唯一名词(NN,NNP,PRP,NNS)是与"物理"或"材料"和唯一动词有语义关系的名词(应该找到的VB,VBZ,VBD等是与"fall"处于语义关系的那些.
我提到"一个或两个动词",因为动词之前可以有辅助动词.你还可以做的是创建一个依赖树来发现主语 - 动词关系,但在这种情况下似乎没有必要.
您可能还想确保排除位置名称并保留人名(因为您会接受"John已经倒下"但不是"柏林已经倒下").这也可以使用Wordnet完成,位置的标记为"noun.location".
我不确定在哪种情况下你必须转换标签,所以我无法提供正确的答案,在我看来你可能不需要在这种情况下:你使用POS标签来识别名词和动词然后检查每个名词和动词是否属于同义词组.
希望这可以帮助.