TF-IDF权重在NLTK预处理之后

2024-06-17 12:12:15 发布

您现在位置:Python中文网/ 问答频道 /正文

在机器学习之前,我正在做一些文本预处理。我有两个特性(Panda系列)abstracttitle-并使用以下函数预处理数据(给出一个numpy数组,其中每行包含一个训练示例的特性):

def preprocessText(data):
    stemmer = nltk.stem.porter.PorterStemmer()
    preprocessed = []
    for each in data:
        tokens = nltk.word_tokenize(each.lower().translate(xlate))
        filtered = [word for word in tokens if word not in stopwords]
        preprocessed.append([stemmer.stem(item) for item in filtered])
    print(Counter(sum([list(x) for x in preprocessed], [])))
    return np.array(preprocessed)

我现在需要使用TF-IDF来衡量功能-我该怎么做?在


Tags: in文本机器fordata特性itemfiltered
1条回答
网友
1楼 · 发布于 2024-06-17 12:12:15

从我所见,您在preprocessed变量中有一个过滤单词的列表。进行TF-IDF转换的一种方法是使用scikit-learn^{}。但是,该类为您标记了空间,即您可以提供每个包含字符串的已处理文档的列表。因此,您必须编辑代码以:

preprocessed.append(' '.join([stemmer.stem(item) for item in filtered]))

然后可以按如下方式转换文档列表

^{pr2}$

输出将是稀疏压缩稀疏行(CSR)格式的矩阵,您可以在稍后转换为numpy数组。在

tfidf_model.vocabulary_将包含词干词干到id的字典映射

相关问题 更多 >