【问题标题】:Multiple Feature Sets多个功能集
【发布时间】:2017-12-14 12:17:11
【问题描述】:

我正在学习 NLP 并学习使用 NLTK 和 scikit-learn 进行文本分类。所以我在 NLTK 的 movie_review 语料库中实现了 Unigram 存在作为一个特性。现在我正在尝试实施一篇他们使用了多种功能的研究论文:

1. N-Gram Features : Unigram : Presence and Count, Bigram : Presence and Count
2. Stylistic Features : POS_Noun, POS_Adverb, POS_Adjective : Ratios No. of spelling errors : Real-valued feature Length of text : Real-valued feature

由于到目前为止我只实现了一项功能,我现在遇到了问题。我可以分别为上述所有功能实现功能,例如:

def find_POS_Noun_feature(document) : 使用 POS_Noun 作为特征对文本进行分类 def find_Length_of_text_feature(document) : 使用#characters 作为我的特征等等。然后我可以分别训练多个分类器。

但我需要的是如何将所有这些功能集成到一个分类器中?

请帮忙,我搜索了互联网但找不到正确的解释。

【问题讨论】:

  • 那么,您的特征函数返回什么?每个数据点的一维数组?如果是这样,您需要连接所有特征函数的返回值。
  • 我的特征函数返回一个字典。我输入 nltk.classify.scikitlearn 分类器的标记数据集是一个元组列表,其中一个是字典,第二个是类别。因此,对于 unigram 存在:[({w1 : True, w2 : False.....},'pos'), ({w1 : False, w2 : True....},'neg')... ...]。同样适用于二元组和 POS_Noun、Length_of_text 等。

标签: python nlp nltk feature-extraction text-classification


【解决方案1】:

将您的所有功能放在一个字典中,无论其来源或类型如何。只需确保功能名称是不同的,这样您就不会丢失任何密钥。

如果您已经有单独的函数返回具有不同类型特征的字典,您可以像这样合并结果:

all_features = find_unigram_features(document)
all_features.update(find_bigram_features(document))
all_features.update(find_POS_Noun_feature(document))
etc.

如果您有任何返回单个值的函数(不是 dict),您应该按照通常的方式更新字典。

all_features["doc_length"] = find_Length_of_text_feature(document)

你训练的特征函数将是合并所有这些特征并返回组合字典的函数。

【讨论】:

  • 这样的all_features可以输入nltk分类器吗?
  • 这就是它的用途。使用它的方式与使用其中一个较小的词典相同。
猜你喜欢
  • 2011-06-24
  • 2011-03-23
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2015-12-10
  • 2012-07-18
  • 1970-01-01
相关资源
最近更新 更多