Python 标记化后的单词包

Python 标记化后的单词包,python,text-mining,text-classification,Python,Text Mining,Text Classification,我研究了许多文本挖掘方法,但在创建单词包时遇到了问题。我理解这是为了将单词转换成数字,以便机器能够理解它,但问题是我刚刚完成了标记化、删除停止词和柠檬化。最后是一个单词列表,如: ['a', 'b', 'a', 'c', 'd', 'a', 'b'] 基本上,我决定用单词来标记。有些单词是重复的,不清楚。我阅读的每一袋单词示例开头都有一系列句子,而不是一系列单词: ['Tom likes blue.', 'Adam likes yellow.' ,'Ann likes red and blue

我研究了许多文本挖掘方法,但在创建单词包时遇到了问题。我理解这是为了将单词转换成数字,以便机器能够理解它,但问题是我刚刚完成了标记化、删除停止词和柠檬化。最后是一个单词列表,如:

['a', 'b', 'a', 'c', 'd', 'a', 'b']
基本上,我决定用单词来标记。有些单词是重复的,不清楚。我阅读的每一袋单词示例开头都有一系列句子,而不是一系列单词:

['Tom likes blue.', 'Adam likes yellow.' ,'Ann likes red and blue']
我的方法正确吗?如果我有一个单字数组,准备一袋单词有意义吗?还是我的标记化错了?或者是顺序错了?但是在一些例子中(比如这里:),我们通常在开始时标记文本


这应该是文本分类的一部分,并为使用像朴素贝叶斯、支持向量机等算法做准备。但我在这一点上卡住了。。。也许我弄错了,应该从我所有的事件中创建一包文字,而不是仅仅创建一个文档?

如果您共享管道,将会有更好的更新。但以你的例子来说,这很简单-

from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer(stop_words='english')
op = vec.fit_transform(['Tom likes blue.', 'Adam likes yellow.' ,'Ann likes red and blue'])
print(op.todense())
print(vec.vocabulary_)
输出

[[0 0 0 1 1 0 1 0]
 [1 0 0 0 1 0 0 1]
 [0 1 1 1 1 1 0 0]]
{'tom': 6, 'likes': 4, 'blue': 3, 'adam': 0, 'yellow': 7, 'ann': 2, 'red': 5, 'and': 1}

如果我理解正确的话,你想从一个标记化的文本文档中准备一袋单词,这是错误的方法。在对每个文档(语料库)进行预处理后,您基本上必须回到“句子”的形式

['hello', 'like', mountain', 'spring']
去吧

'hello like mountain spring'
对所有文档执行此操作,这样您将拥有类似于示例中的数组

['hello like mountain summer', 'another string here', 'another also here']
这是我们可以开始准备单词袋的表格,它将是:

{hello, like, mountain, summer, another, string, here, also}

从这一点开始,计算TF,TFID将非常容易,这是CountVectorizer期望的适合变换的形式。

是的,你应该用单词来标记。但在上面显示的示例中,该列表是使用按字符标记的方法生成的。请重新检查您的标记代码。