首页 > 解决方案 > 在 Python 中标记 10 个文档的语料库

问题描述

我是 Python 编码的新手,所以弄清楚如何编写更高级的操作对我来说是一个挑战。

我的任务是计算包含 10 个文档的语料库的 TF-IDF。但我被困在如何标记语料库并打印出标记的数量和唯一标记的数量。

如果有人可以帮助甚至逐步引导我朝着正确的方向前进,将不胜感激!

标签: pythontokenizetf-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 个文档

不确定您要对此做什么,您可能会发现这两篇文章很有用。

  • DataCamp 的这篇文章在推荐系统中使用了 tfidf

  • DataCamp 的这篇文章有一些通用的 NLP 处理技术


推荐阅读