【发布时间】:2014-11-08 07:26:23
【问题描述】:
目标:矢量化标记化文本以创建术语文档矩阵,支持对非结构化文本数据进行 NLP 分析。预测和文本分类将是分析的重要组成部分,因此能够将标签/类与每个文本相关联至关重要。为此,我需要对术语文档矩阵进行结构化,使得每一行代表一个文本,每一列代表整个语料库中出现的单词之一。文本的类/标签也将是矩阵中的向量。
问题:文本中的每条记录都表示为列表中的一项(第一条记录是列表中的第一项,第二条记录是列表中的第二项,依此类推)。标记列表中每条记录的内容并生成每个单词的巨大列表很容易。我的问题是,在标记化之后,我无法保留原始列表结构并将每个标记与原始列表中的记录进行映射。这使得矢量化变得不可能。
举例说明:
record_one = 'I like ham. I also like pineapple.'
record_two = 'I love cheese. I enjoy tomato sauce and dough too.'
record_three = 'Hence, I dig Hawaiian pizza. And beer.'
recordList = [record_one, record_two, record_three]
结果(列表三条记录,每条两句):
['I like ham. I also like pineapple.', 'I love cheese. I enjoy tomato sauce and dough too.', 'Hence, I dig Hawaiian pizza. And beer.']
标记化:
from nltk.tokenize import word_tokenize
wordList= []
for r in recordList:
temp = word_tokenize(r)
for token in temp:
wordList.append(token)
结果(recordList 中每个单词的巨大列表):
['I', 'like', 'ham.', 'I', 'also', 'like', 'pineapple', '.', 'I', 'love', 'cheese.', 'I', 'enjoy', 'tomato', 'sauce', 'and', 'dough', 'too', '.', 'Hence', ',', 'I', 'dig', 'Hawaiian', 'pizza.', 'And', 'beer', '.']
这就是我卡住的地方。此时矢量化给了我一个 28x18 矩阵,而我需要的是一个 3x18 矩阵。我需要以某种方式将每个术语映射到它在 recordList 中的记录,以提供 3x18 矩阵,但我不知道该怎么做。我知道我缺少一些明显的东西。
我是 Python 和 NLP 的新手,所以我试图让事情尽可能简单。这意味着使用列表、创建循环来处理这些列表以及列表推导。我知道还有其他模块和函数可以做到这一点(scikit),但我试图强迫自己使用基本的 Python 数据结构来提高我对语言的理解。如果可以使用基本的 Python 数据结构创建解决方案,那将是非常棒的。
提前致谢!
【问题讨论】:
标签: python list matrix nlp text-mining