仅如何生成二元组/三元组语料库

问题描述 投票:0回答:1

Gensim是否有一种方法可以严格生成单词列表中的双字母组,三字母组?

我可以成功地生成双字母组,双字母组,三字母组,但我只想提取双字母组,三字母组。

例如,在下面的列表中:

words = [['the', 'mayor', 'of', 'new', 'york', 'was', 'there'],["i","love","new","york"],["new","york","is","great"]]

我使用

bigram = gensim.models.Phrases(words, min_count=1, threshold=1)
bigram_mod = gensim.models.phrases.Phraser(bigram)
words_bigram = [bigram_mod[doc] for doc in words]

这将按如下所示创建一个字母组合和双字母组的列表:

[['the', 'mayor', 'of', 'new_york', 'was', 'there'],
 ['i', 'love', 'new_york'],
 ['new_york', 'is', 'great']]

我的问题是,有没有一种方法(除了正则表达式之外)严格地提取双字母组,因此在此示例中仅会产生“ new_york”?

python nlp gensim
1个回答
0
投票

这不是gensim Phrases功能的内置选项。

[如果我们可以假设原始的字母组合中都没有'_'字符,那么只选择带有'_'的标记的步骤就不会太昂贵(并且不需要完整的正则表达式)。例如,您的最后一行可能是:

words_bigram = [ [token for token in bigram_mod[doc] if '_' in token] for doc in words ]

((如果出于某些原因,您的会标中有下划线,并且您不希望那些与Phrases组合的双字母组合混淆的字符,可以更改连接字符。]

如果这些都不够好,您可能会看到gensim中的代码,该代码实际上对unigram进行评分并将其组合成双字母组...

https://github.com/RaRe-Technologies/gensim/blob/fbc7d0952f1461fb5de3f6423318ae33d87524e3/gensim/models/phrases.py#L300

...,并使用您额外需要的选项扩展该模块,或者在您自己的代码中模拟其在类之外的行为。

© www.soinside.com 2019 - 2024. All rights reserved.