如何在必要的预处理后使用 nltk 文本分析库预测特定文本或文本组

Posted

技术标签:

【中文标题】如何在必要的预处理后使用 nltk 文本分析库预测特定文本或文本组【英文标题】:How to predict a specific text or group of text using nltk Text Analysis libraries after necessary preprocessing 【发布时间】:2018-10-09 17:52:32 【问题描述】:

所有代码都在 python 中。我有一个名为“corpus”的 python 列表,其中包含总共 2000 条评论(+ve 和 -ve 都评论了)。 mycode 的主要/重要部分是:

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(max_features=2000, max_df=0.6, min_df=3, stop_words=stopwords.words("english"))
X = vectorizer.fit_transform(corpus)

from sklearn.feature_extraction.text import TfidfTransformer  
transformer = TfidfTransformer()
X = transformer.fit_transform(X)

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=0)

from sklearn.linear_model import LogisticRegression
logistic_reg = LogisticRegression()
logistic_reg.fit(X_train, y_train)

现在我想预测一个句子为 +ve 或 -ve('1' 或 '0')。这句话是

sample = ["you are a nice person and have a good life"]

我应该如何进行上述预测。(我知道 CountVectorizer 和 TdfidfTransformer 的作用是什么,但它让我对 TdfidfVectorizer 感到困惑)

【问题讨论】:

但是您没有在代码中的任何地方使用TdfidfVectorizer?你到底想要什么。 TdfidfVectorizer 只是 CountVectorizerTfidfTransformer 的组合 【参考方案1】:

你通过CountVectorizerTfidfTranformer完成的事情可以单独由TfidfVecorizer完成。

回答你的问题:

sample = ["you are a nice person and have a good life"]

这是您要预测的样本数据。这里我在矢量化器(CountVectorizer)上使用了变换方法

Count_sample = vectorizer.transform(sample)

在转换 CountVectorizer 之后,我们必须在转换器上使用转换方法(TfidfTranformer)

Tfidf_sample = transformer.transform(Count_sample)

完成所有数据转换后使用LogisticRegression的预测功能

predicted = logistic_reg.predict(Tfidf_sample)

【讨论】:

tfidf 向量化器与将语料库通过countVectorizer 和tfidfTransformer 后相同。它现在工作正常。

以上是关于如何在必要的预处理后使用 nltk 文本分析库预测特定文本或文本组的主要内容,如果未能解决你的问题,请参考以下文章

微调后如何使用语言模型进行预测?

微调后如何使用语言模型进行预测?

如何使用 NLTK 检查不可读的 OCRed 文本

Python自然语言工具包(NLTK)入门

自然语言处理——NLTK文本语料库

NLTK的使用