Nlp 基于短语转换的短语检测

Nlp 基于短语转换的短语检测,nlp,gensim,n-gram,phrase,Nlp,Gensim,N Gram,Phrase,上述代码确实返回了预期的计算机科学。但是,什么是实用地提取短语的正确方法?短语转换程序封装了gensim的短语模型的一个实例,该模型实际编译了共现统计数据并将bigrams提升为短语 不幸的是,至少通过gensim-3.8.3(2020年4月),对象没有提供它可能发出的所有短语的列表。本质上,它只是编译统计数据,然后在显示新文本时,检查应该组合哪些bigram(根据其当前的统计和参数) 这种方法的缺点包括: 大量冗余的重新计算 没有“所有”可能的短语的方便列表 保留消耗内存的潜在短语,这些短语

上述代码确实返回了预期的计算机科学。但是,什么是实用地提取短语的正确方法?

短语转换程序封装了gensim的
短语
模型的一个实例,该模型实际编译了共现统计数据并将bigrams提升为短语

不幸的是,至少通过
gensim-3.8.3
(2020年4月),对象没有提供它可能发出的所有短语的列表。本质上,它只是编译统计数据,然后在显示新文本时,检查应该组合哪些bigram(根据其当前的统计和参数)

这种方法的缺点包括:

  • 大量冗余的重新计算
  • 没有“所有”可能的短语的方便列表
  • 保留消耗内存的潜在短语,这些短语不符合当前评分/阈值参数,但如果这些参数发生更改,则可能会出现
这种方法的优点包括:

  • 更改评分/阈值参数可以立即启用新短语
若要实际获取一个
词组
实例可以创建的词组列表,您需要向它提供所有潜在词组的文本,并查看它提升了什么。这可能是gensim
短语
上的一个实用方法,因为在相关的
短语
类初始化中已经完成了一个非常类似的枚举,但事实并非如此。这种方法的工作原理大致如下(这可能有bug,因为我还没有测试它):

从gensim.models.phrases导入伪语料库
def报告所有短语(短语模型):
语料库=伪语料库(短语\u model.vocab、短语\u model.delimiter、短语\u model.common\u terms)
短语语法=集合()
对于bigram,在短语中评分\u model.export\u短语(语料库,self.delimiter,as\u tuples=True):
短语。添加(双字符)
返回短语

你所说的“正确的方式”和“务实”是什么意思?(短语统计技术在很多方面都是可行的,但它既会遗漏一个人能感知到的短语/概念/实体,又会结合一个人能从上下文中分辨出的多重图,而这些多重图并不是真正的意义单位。因此,结果在向用户展示时往往不美观,但在幕后对用户来说仍然很有帮助比如分类或信息检索)比如m.get_词组()这样它就可以返回计算机科学。我不确定是否有这样的方法或属性可以做到这一点,你的意思是,列出所有可能学到的短语吗?确切地说,我不确定是否有这样的方法或属性,因为我对n-gram是新手
from gensim.sklearn_api.phrases import PhrasesTransformer

# Create the model. Make sure no term is ignored and combinations seen 3+ times are captured.
m = PhrasesTransformer(min_count=1, threshold=3)
text = [['I', 'love', 'computer', 'science', 'computer', 'science', 'is', 'my', 'passion', 'I', 'studied', 'computer', 'science']]

# Use sklearn fit_transform to see the transformation.
# Since computer and science were seen together 3+ times they are considered a phrase.
m.fit_transform(text)