首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gensim短语用于过滤n-gram

Gensim短语用于过滤n-gram
EN

Stack Overflow用户
提问于 2017-12-10 10:49:17
回答 2查看 1.8K关注 0票数 1

我正在使用Gensim短语来识别文本中的重要n-gram,如下所示。

代码语言:javascript
复制
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 issueimportant matterhigh risk等。我特别感兴趣的是检测文本中的概念,如machine learninghuman computer interaction等。

我在上面的例子中提到过,有没有办法停止检测不感兴趣的n-gram的短语?

EN

回答 2

Stack Overflow用户

发布于 2017-12-11 10:37:00

Phrases有一个可配置的threshold参数,它可以调整统计截止值,以将单词对提升为短语。(阈值越大,变成短语的对就越少。)

你可以调整它,使它的更大比例的推广短语符合你自己对“有趣”短语的特别直觉-但这个类仍然使用一种相当粗糙的方法,没有任何语法意识或语料库之外的领域知识。因此,任何获得你想要的所有/大部分短语的值都可能包括许多不感兴趣的短语,反之亦然。

如果您先验地知道某些词组很重要,那么您可以在基于搭配统计的Phrases过程之前(或代替)对语料库进行预处理,以将它们组合成单个标记。

票数 3
EN

Stack Overflow用户

发布于 2017-12-11 03:33:53

如果我明白你想做什么,你可以在你的语料库上尝试tf_idf,而不是在一个更大的标准语料库(维基百科或其他什么)上使用tf_idf。

代码语言:javascript
复制
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,当然,只有当您有足够多的文档数量时,这才会起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47735393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档