Tfidfvectorizer - 如何查看已处理的令牌?
Tfidfvectorizer - How can I check out processed tokens?
如何检查 TfidfVertorizer()
中标记化的字符串?如果我不在参数中传递任何内容,TfidfVertorizer()
将使用一些预定义的方法标记字符串。我想观察它如何标记字符串,以便我可以更轻松地调整我的模型。
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = ['This is the first document.',
'This document is the second document.',
'And this is the third one.',
'Is this the first document?']
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
我想要这样的东西:
>>>vectorizer.get_processed_tokens()
[['this', 'is', 'first', 'document'],
['this', 'document', 'is', 'second', 'document'],
['this', 'is', 'the', 'third', 'one'],
['is', 'this', 'the', 'first', 'document']]
我该怎么做?
我不确定是否有一个内置的 sklearn 函数可以让你以那种格式输出,但我很确定一个合适的 TfidfVectorizer 实例有一个 vocabulary_
属性,returns 一个字典术语到特征索引的映射。阅读更多 here.
将它与 get_feature_names
方法的输出相结合应该能够为您完成此操作。希望对你有帮助。
这在语法上可能不正确(在内存中这样做),但它的总体思路是:
Y = X.to_array()
Vocab = vectorizer.get_feature_names()
fake_corpus = []
for doc in Y:
l = [Vocab[word_index] for word_index in doc]
fake_corpus.append(l)
用 Y 你有语料库中每个文档的单词索引,用 vocab 你也有给定索引对应的单词,所以你基本上只需要将它们组合起来。
build_tokenizer()
正好可以达到这个目的。
试试这个!
tokenizer = lambda docs: [vectorizer.build_tokenizer()(doc) for doc in docs]
tokenizer(corpus)
输出:
[['This', 'is', 'the', 'first', 'document'],
['This', 'document', 'is', 'the', 'second', 'document'],
['And', 'this', 'is', 'the', 'third', 'one'],
['Is', 'this', 'the', 'first', 'document']]
一个线性解决方案是
list(map(vectorizer.build_tokenizer(),corpus))
如何检查 TfidfVertorizer()
中标记化的字符串?如果我不在参数中传递任何内容,TfidfVertorizer()
将使用一些预定义的方法标记字符串。我想观察它如何标记字符串,以便我可以更轻松地调整我的模型。
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = ['This is the first document.',
'This document is the second document.',
'And this is the third one.',
'Is this the first document?']
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
我想要这样的东西:
>>>vectorizer.get_processed_tokens()
[['this', 'is', 'first', 'document'],
['this', 'document', 'is', 'second', 'document'],
['this', 'is', 'the', 'third', 'one'],
['is', 'this', 'the', 'first', 'document']]
我该怎么做?
我不确定是否有一个内置的 sklearn 函数可以让你以那种格式输出,但我很确定一个合适的 TfidfVectorizer 实例有一个 vocabulary_
属性,returns 一个字典术语到特征索引的映射。阅读更多 here.
将它与 get_feature_names
方法的输出相结合应该能够为您完成此操作。希望对你有帮助。
这在语法上可能不正确(在内存中这样做),但它的总体思路是:
Y = X.to_array()
Vocab = vectorizer.get_feature_names()
fake_corpus = []
for doc in Y:
l = [Vocab[word_index] for word_index in doc]
fake_corpus.append(l)
用 Y 你有语料库中每个文档的单词索引,用 vocab 你也有给定索引对应的单词,所以你基本上只需要将它们组合起来。
build_tokenizer()
正好可以达到这个目的。
试试这个!
tokenizer = lambda docs: [vectorizer.build_tokenizer()(doc) for doc in docs]
tokenizer(corpus)
输出:
[['This', 'is', 'the', 'first', 'document'],
['This', 'document', 'is', 'the', 'second', 'document'],
['And', 'this', 'is', 'the', 'third', 'one'],
['Is', 'this', 'the', 'first', 'document']]
一个线性解决方案是
list(map(vectorizer.build_tokenizer(),corpus))