我正在使用Gensim Phrases在我的文本中识别重要的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-gram,例如special issue
,important matter
,high risk
等。我特别感兴趣的是检测文本中的概念,例如machine learning
,human computer interaction
等。
有没有办法阻止短语检测不感兴趣的n-gram,正如我在上面的例子中所提到的那样?
答案 0 :(得分:1)
Phrases
有一个可配置的threshold
参数,用于调整统计截止值,以便将字对提升为短语。 (较大的阈值意味着较少的对成为短语。)
你可以调整它以试图让更大比例的推广短语与你自己关于“有趣”短语的直觉直觉相匹配 - 但是这个类仍然使用相当粗略的方法,没有任何超越语法或领域知识的意识语料库里有什么。因此,获得所有/大多数短语的任何价值都可能包含许多无趣的短语,反之亦然。
如果您具有某些词组具有重要性的先验知识,则可以在基于搭配统计的Phrases
过程之前(或代替)之前,自行预处理语料库以将这些词组合成单个标记。
答案 1 :(得分:0)
如果我理解你正在尝试做什么,你可以在你的语料库上尝试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
只查看具有非常不同值的ngrams,这当然只有在您拥有足够多的文档时才有效。