Nlp Spacy:自动查找文本中的引理模式

Nlp Spacy:自动查找文本中的引理模式,nlp,pattern-matching,spacy,Nlp,Pattern Matching,Spacy,我正在学习如何使用Spacy。 基于下面的示例,我的目标是获得更多经常与iPhone一词相关的引理模式(我有一个文本数据库,可以在其中找到这些模式)。 例如“iPhone是最好的智能手机”、“iPhone太贵”等等。 我需要手工找到那些图案吗。或者有没有可能让这一切自动化(至少是为了得到建议或类似的东西) 我的最终目标是构建一个工具,它将接收一些文本作为输入,并基于这些模式识别iPhone、三星abc等 导入空间 从spacy.matcher导入matcher nlp=spacy.load(“e

我正在学习如何使用Spacy。 基于下面的示例,我的目标是获得更多经常与iPhone一词相关的引理模式(我有一个文本数据库,可以在其中找到这些模式)。 例如“iPhone是最好的智能手机”、“iPhone太贵”等等。 我需要手工找到那些图案吗。或者有没有可能让这一切自动化(至少是为了得到建议或类似的东西)

我的最终目标是构建一个工具,它将接收一些文本作为输入,并基于这些模式识别iPhone、三星abc等

导入空间
从spacy.matcher导入matcher
nlp=spacy.load(“en_core\u web\u sm”)
matcher=matcher(nlp.vocab)
模式1=[{“引理”:“购买”},{“名词”:“iPhone”}]
添加(“购买iphone”,无,模式1)
doc=nlp(“我要买一部iPhone”)
打印(文档)

我不确定Matcher是否是这里的正确选择,因为它匹配的是精确的短语。但在您的示例中,还有一篇附加文章。相反,您可以这样做来获得动词电话对:

导入空间
nlp=spacy.load(“en_core\u web\u sm”)
#提取动词电话对,给定动词和电话
def提取动词(文档、动词引理、电话):
结果=[]
动词=[如果动词引理中的verb.lemma uu,则表示文档中动词的动词]
对于动词中的动词:
对于动词.children中的child:
如果手机中有child.lower uu:
results.append((动词.引理,child.文本))
返回结果
#提取给定电话的动词电话对
def extract_电话(文档,电话):
结果=[]
phones=[如果phone.lower uu在phones中,则文件中的phone对应phone]
对于电话接入电话:
results.append((phone.head.lemma,phone.text))
返回结果
doc=nlp(“我要买一部iPhone。三星真糟糕。我一直想要一部iPhone,但我刚买了一部三星。”)
动词引理=[“买”]
手机=[“三星”、“iphone”]
打印(提取动词(文档、动词引理、电话))#返回[('buy','iPhone')]
打印(提取手机(doc,phones))#返回[('buy','iPhone'),('suck','Samsung'),('want','iPhone'),('get','Samsung')]