python - 在 Python 中标记 10 个文档的语料库
问题描述
我是 Python 编码的新手,所以弄清楚如何编写更高级的操作对我来说是一个挑战。
我的任务是计算包含 10 个文档的语料库的 TF-IDF。但我被困在如何标记语料库并打印出标记的数量和唯一标记的数量。
如果有人可以帮助甚至逐步引导我朝着正确的方向前进,将不胜感激!
解决方案
这可能会有所帮助。
我有一组单独的文本文件,我想摄取这些文件并将其转换为 TfidfVectorizer。这将完成提取文件和使用 TfidfVectorizer 的过程。
我去kaggle获取一些关于电影评论的示例数据
我使用了负面(负面)评论。就我的目的而言,数据是什么并不重要,我只需要一些文本数据。
导入所需的包
import pandas as pd
import glob
from sklearn.feature_extraction.text import TfidfVectorizer
这些包将如何使用?
我们将使用 pandas 为 TfidfVectorizer 暂存数据
glob 将用于收集文件目录位置
TfidfVectorizer 是节目的明星
使用 Glob 收集文件位置
ls_documents = []
for name in glob.glob('/location/to/folder/with/document/files/*'):
ls_documents.append(name)
这将生成文件位置列表。
从前 10 个文件中读取数据
ls_text = []
for document in ls_documents[:10]:
f = open(document,"r")
ls_text.append(f.read())
我们现在有一个文本列表。
导入熊猫
df_text = pd.DataFrame(ls_text)
重命名列以使其更易于使用
df_text.columns = ['raw_text']
通过删除任何带有空值的行来清理数据
df_text['clean_text'] = df_text['raw_text'].fillna('')
您可能会选择进行其他清洁。保留原始数据并创建单独的“干净”列很有用。
创建一个 tfidf 对象 - 我将为它提供英文停用词
tfidf = TfidfVectorizer(stop_words='english')
通过向 tfidf 传递 clean_text 系列来拟合和转换我们在上面创建的 clean_text
tfidf_matrix = tfidf.fit_transform(df_text['clean_text'])
您可以从 tfidf 查看功能名称
tfidf.get_feature_names()
你会看到看起来像这样的东西
['10',
'13',
'14',
'175',
'1960',
'1990s',
'1997',
'20',
'2001',
'20th',
'2176',
'60',
'80',
'8mm',
'90',
'90s',
'_huge_',
'aberdeen',
'able',
'abo',
'accent',
'accentuate',
'accident',
'accidentally',
'accompany',
'accurate',
'accused',
'acting',
'action',
'actor',
....
]
你可以看看矩阵的形状
tfidf_matrix.shape
在我的例子中,我得到了一个形状
(10, 1733)
大约这意味着 1733 个单词(即标记)描述了 10 个文档
不确定您要对此做什么,您可能会发现这两篇文章很有用。
推荐阅读
- c# - 将给定的单词随机排列到矩阵中
- java - 编程新手,遇到运行时错误,不知道为什么
- tensorflow - 使用 3 元素线性数据来训练模型,我包括了一个异常值测试数据。为什么测试准确率还是100%?
- jquery - jQuery - 将标签附加/删除到每个项目的列表
- python-3.x - 在 python 中使用 google api 创建问题时,问题 ID 不为空
- android - IllegalStateException:无法将 SemanticsComponentNode 转换为视图
- python - 如何让精灵出现在 pygame 窗口上
- sql - PostgreSQL 在所有情况下都左连接横向输出
- react-native - 如何将组件放置在文本行的末尾
- python - 了解单链接队列函数的实现