是否有任何类似于词和句子级别的分类器?

时间:2014-12-03 09:15:44

标签: python machine-learning artificial-intelligence classification data-mining

在scikit learn或nltk分类器中,通常会考虑术语频率或TF-IDF。

我想考虑术语频率,分类的句子结构。我有15类问题。每个文本文件都包含带有新行的句子。

类别城市包含这句话:

In which city Obama was born?

如果我考虑学期频率,则可能不会考虑以下情况。因为数据集中的奥巴马或城市与查询句子不匹配

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

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

2 个答案:

答案 0 :(得分:2)

除了unigrams之外,您还可以在ngrams上训练tf-idf。 在Scikit中,您可以指定将被考虑的ngram_range:如果您将其设置为最多3克训练,则最终会存储单词组合的频率,例如“在哪个地方” ,这很好地表明了问题的类型。

答案 1 :(得分:1)

正如drekyn所说,你可以使用Scikit学习特征提取这里有一些例子:

>>> 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