如何在必要的预处理后使用 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
只是 CountVectorizer
和 TfidfTransformer
的组合
【参考方案1】:
你通过CountVectorizer
和TfidfTranformer
完成的事情可以单独由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 文本分析库预测特定文本或文本组的主要内容,如果未能解决你的问题,请参考以下文章