有没有在单词和句子级别都起作用的分类器?

Posted

技术标签:

【中文标题】有没有在单词和句子级别都起作用的分类器?【英文标题】:Is there any classifiier which works at both word and sentence level? 【发布时间】:2015-01-31 18:39:46 【问题描述】:

在 scikit learn 或 nltk 分类器中一般会考虑词频或 TF-IDF。

我还想考虑词频,用于分类的句子结构。我有 15 类问题。每个文本文件都包含带有换行符的句子。

Category city 包含这句话:

In which city Obama was born?

如果我考虑词频,那么可能不会考虑跟随。因为数据集中的 obama 或 city 与查询语句不匹配

1. In which place Hally was born 2. In which city Hally was born?

是否有任何分类器既考虑词频又考虑句子结构。因此,在训练时,它也会对具有相似句子结构的输入查询进行分类

【问题讨论】:

【参考方案1】:

正如drekyn 所说,您可以使用 Scikit learn 进行特征提取,这里有一些示例:

>>> bigram_vectorizer = CountVectorizer(ngram_range=(1, 2),
...                                     token_pattern=r'\b\w+\b', min_df=1)
>>> analyze = bigram_vectorizer.build_analyzer()
>>> analyze('Bi-grams are cool!') == (
...     ['bi', 'grams', 'are', 'cool', 'bi grams', 'grams are', 'are cool'])
True

Source

【讨论】:

【参考方案2】:

除了 unigram 之外,您还可以在 ngram 上训练 tf-idf。 在 Scikit Learn 中,您可以指定将要考虑的 ngram_range:如果您将其设置为最多训练 3 克,您最终将存储诸如“在哪个地方”之类的单词组合的频率,其中很能说明问题的类型。

【讨论】:

以上是关于有没有在单词和句子级别都起作用的分类器?的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯分类器:每个类别的语料库大小必须相同吗?

在 Java 中为 Maxent 分类器创建训练数据

如何使用单词的向量表示(从 Word2Vec 等获得)作为分类器的特征?

如何在斯坦福分类器中使用朴素贝叶斯分类器、SVM 和最大熵

100 万个句子要保存在数据库中 - 删除不相关的英语单词

如何使用单词的向量表示(从Word2Vec等获得)作为分类器的特征?