Skip to main content
 首页 » 编程设计

python之it-idf with TfidfVectorizer 在日语文本上

2025年05月04日28Renyi-Fan

我正在处理大量用多种语言编写的文档。我想根据文档的 tf-idf 分数计算文档之间的余弦距离。到目前为止,我有:

from sklearn.feature_extraction.text import TfidfVectorizer 
 
# The documents are located in the same folder as the script 
text_files = [r'doc1', r'doc2', r'doc3']  
files = [open(f) for f in text_files] 
documents = [f.read() for f in files] 
 
vectorizer = TfidfVectorizer(ngram_range=(1,1)) 
tfidf = vectorizer.fit_transform(documents) 
vocabulary = vectorizer.vocabulary_ 

当 doc1、doc2 和 doc3 这三个文档包含英文文本时,该算法就像一个魅力和 vocabulary 确实包含来自不同文本主体的 unigrams。我也试过用俄语,效果也很好。但是,当我尝试使用一些日语文本时,该算法不再按预期工作。

问题出在日语中没有空格,因此 TfidfVectorizer 无法理解什么是单词什么不是。例如,我的 unigram 词汇表中会有这样的内容:

診多索いほ権込真べふり告車クノ般宮えぼぜゆ注携ゆクく供9時ク転組けが意見だっあ税新ト復生ひり教台話辞ゃに

这显然是一个句子而不是一个词。我该如何解决这个问题?

请您参考如下方法:

你应该为日语提供分词器

vectorizer = TfidfVectorizer(ngram_range=(1,1), tokenizer=jap_tokenizer) 

其中 jap_tokenizer 是您创建的函数或类似 this 的函数.