我正在使用Gensim短语来识别文本中的重要n-gram,如下所示。
bigram = Phrases(documents, min_count=5)
trigram = Phrases(bigram[documents], min_count=5)
for sent in documents:
bigrams_ = bigram[sent]
trigrams_ = trigram[bigram[sent]]但是,这会检测到不感兴趣的n元语法,如special issue、important matter、high risk等。我特别感兴趣的是检测文本中的概念,如machine learning、human computer interaction等。
我在上面的例子中提到过,有没有办法停止检测不感兴趣的n-gram的短语?
发布于 2017-12-11 10:37:00
Phrases有一个可配置的threshold参数,它可以调整统计截止值,以将单词对提升为短语。(阈值越大,变成短语的对就越少。)
你可以调整它,使它的更大比例的推广短语符合你自己对“有趣”短语的特别直觉-但这个类仍然使用一种相当粗糙的方法,没有任何语法意识或语料库之外的领域知识。因此,任何获得你想要的所有/大部分短语的值都可能包括许多不感兴趣的短语,反之亦然。
如果您先验地知道某些词组很重要,那么您可以在基于搭配统计的Phrases过程之前(或代替)对语料库进行预处理,以将它们组合成单个标记。
发布于 2017-12-11 03:33:53
如果我明白你想做什么,你可以在你的语料库上尝试tf_idf,而不是在一个更大的标准语料库(维基百科或其他什么)上使用tf_idf。
from sklearn.feature_extraction.text import
TfidfVectorizertfidf_vectorizer =
TfidfVectorizer(max_df=0.8, max_features=500,min_df=0.2,
stop_words='english', use_idf=True, ngram_range=(1,2))
X = tfidf_vectorizer.transform(docs) # transform the documents to their tf_idf vectors只查看具有非常不同值的ngram,当然,只有当您有足够多的文档数量时,这才会起作用。
https://stackoverflow.com/questions/47735393
复制相似问题