我正在对语言学论文进行主题建模,并使用Gensim短语来识别频繁的搭配。我希望能够将术语标记为“do-support”和“it-cleft”作为一个单词,因为它们是特定的语言术语。然而,如果我在删除停用词之后创建Gensim模型,将找不到这些搭配(因为它们包含停用词),如果我在删除停用词(或者不包括' it‘或’do‘的停用词)之后创建模型,它会识别出一大堆不相关的搭配。有没有办法手动添加应该被Gensim短语识别为搭配的短语?谢谢!
发布于 2017-08-22 06:53:20
Phrases
类不能添加所需的二元语法。它的技术通常不期望“停用词”在处理之前被删除。
您可以通过尝试不同的“threshold”和“min_count”值来调整Phrases
行为。
如果你发现一些设置连接了想要的短语,但也有一些不想要的短语仍然符合相同的统计阈值,也许这并不是一个很大的危害,尽管有些短语是不直观的。所有这些统计技术都是不精确的,通常最好的判断是它们在量化目标上的最终结果-而不是从特别审查中发现的任何随意的奇怪/角落案例。
如果您确实想深入研究代码以添加强制某些二元语法的功能,那么通过Phraser
实用程序类(也在gensim的phrases.py
模块中)可能会更容易。以一些额外的前期计算为代价,它将Phrases
数据减少到一个更小的结构,只有稍后会通过组合阈值的二元模型。因此,它节省了一点内存,并且稍后执行语料库转换的速度会更快一些,但如果只保留Phraser
,则无法尝试低于创建时使用的其他阈值/最小计数。但是,在创建之后,您可能会强制额外手工选择的二元模型进入它的结构,这比篡改完整的Phrases
模型更容易。
更新(2021年4月):从Gensim-4.0中开始,Phraser
类已重命名为FrozenPhrases
,以便与训练Phrases
类更好地区分开来。此外,suggestion in a project issue提供了一种可能有效的方法来“强制”某些二元语法短语始终被提升。具体地说:
phrases = Phrases(…) # do customary training/etc
frozen_phrases = phrases.freeze() # freeze bigrams' scores for compactness/efficiency
frozen_phrases.phrasegrams['my_phrase'] = float('inf') # set the desired phrase to infinite score
https://stackoverflow.com/questions/45802490
复制相似问题