手动将搭配添加到 gensim 短语器.



我正在对语言学论文进行主题建模,我正在使用Gensim短语来识别频繁的搭配。我希望能够将术语标记为"do-support"和"it-clefts"作为一个单词,因为它们是特定的语言术语。但是,如果我在取出停用词后制作 Gensim 模型,则不会找到这些搭配(因为它们包含停用词(,如果我在取出停用词(或不包含"it"或"do"的停用词(后制作模型,它会识别出一大堆不相关的搭配。有没有办法手动添加应该被 Gensim 短语识别为搭配的短语? 谢谢!

Phrases类无法添加所需的双字母。它的技术通常期望在处理之前删除"停用词"。

您可以通过尝试不同的"阈值"和"min_count"值来调整Phrases行为。

如果您发现某些设置连接了所需的短语,但也连接了一些仍然符合相同统计阈值的不需要的短语,尽管某些短语不直观,但这可能不是一个很大的危害。所有这些统计技术都是不精确的,通常最好根据它们在定量目标上的最终结果来判断 - 而不是从临时审查中发现的任何任意的奇怪/极端情况。

如果你确实想深入研究代码以添加强制某些二进制字母的能力,那么通过Phraser实用程序类(也在 gensim 的phrases.py模块中(可能会更容易。以一些额外的前期计算为代价,它将Phrases数据减少到较小的结构,只有稍后通过组合阈值的双元词。因此,它可以节省一点内存,并更快地执行以后的语料库转换,但是如果您只保留Phraser,您将失去尝试低于其创建中使用的其他阈值/min_counts的能力。但是,在创建后,您可能会将额外的手工选择的双字母强加到其结构中,这比篡改完整的Phrases模型更容易。

更新(2021 年 4 月(:从 Gensim-4.0 开始,Phraser类已重命名为FrozenPhrases,以便更好地与训练类Phrases区分开来。 此外,项目问题中的建议提供了一种可能有效的方法来"强制"某些双字母短语始终被提升。具体说来:

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

最新更新