it-idf 与 TfidfVectorizer 在日语文本上

Edg*_*rby 1 python parsing nlp tf-idf scikit-learn

我正在处理以多种语言编写的大量文档。我想根据文档的 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_
Run Code Online (Sandbox Code Playgroud)

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

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

??????????????????????????????9???????????????????????? ??

Whic 显然是一个句子而不是一个词。我怎么解决这个问题?

Ari*_* F. 5

你应该为日本人提供一个分词器

vectorizer = TfidfVectorizer(ngram_range=(1,1), tokenizer=jap_tokenizer)
Run Code Online (Sandbox Code Playgroud)

其中,jap_tokenizer要么是你创建一个函数或一个像这样