下面是我输入的熊猫数据框。
如何使用nltk或scikit学习?
我写了下面的代码,它以字符串作为输入。如何将其扩展到系列/数据框?
from nltk.collocations import *
desc='john is a guy person you him guy person you him'
tokens = nltk.word_tokenize(desc)
bigram_measures = nltk.collocations.BigramAssocMeasures()
finder = BigramCollocationFinder.from_words(tokens)
finder.ngram_fd.viewitems()
如果你的数据像
import pandas as pd
df = pd.DataFrame([
'must watch. Good acting',
'average movie. Bad acting',
'good movie. Good acting',
'pathetic. Avoid',
'avoid'], columns=['description'])
您可以使用CountVectorizer
包的sklearn
:
from sklearn.feature_extraction.text import CountVectorizer
word_vectorizer = CountVectorizer(ngram_range=(1,2), analyzer='word')
sparse_matrix = word_vectorizer.fit_transform(df['description'])
frequencies = sum(sparse_matrix).toarray()[0]
pd.DataFrame(frequencies, index=word_vectorizer.get_feature_names(), columns=['frequency'])
这给你:
frequency
good 3
pathetic 1
average movie 1
movie bad 2
watch 1
good movie 1
watch good 3
good acting 2
must 1
movie good 2
pathetic avoid 1
bad acting 1
average 1
must watch 1
acting 1
bad 1
movie 1
avoid 1
编辑
fit
只会“训练”您的矢量化器:它将分割您的语料库的单词并使用它来创建词汇表。然后transform
可以获取一个新文档并基于矢量化器词汇创建频率矢量。
这里的训练集就是输出集,因此您可以同时进行两种操作(fit_transform
)。因为您有5个文档,所以它将创建5个向量作为矩阵。您需要一个全局向量,所以必须制作一个sum
。
编辑2
对于大数据帧,您可以使用以下方法来加快频率计算:
frequencies = sum(sparse_matrix).data
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句