首页 > 解决方案 > 在 gensim 中正确标记数据

问题描述

我对如何在gensim. 我有一个 myfile.txt包含以下文本的文本文件

""" 
this is a very long string with a title


and some white space. Multiple sentences, too. This is nuts!
Yay! :):):) 
"""

我加载这个文件gensimLineReader('myfile.txt')训练word2vec模型(当然我的数据比上面的例子大得多)

但是这个文本是否被正确地标记了?我问这个是因为LineReader似乎非常具体:

路径中文件(文本或压缩文本文件)的格式是一句话 = 一行,其中单词已经过预处理并由空格分隔。见https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.LineSentence

我很困惑。我做的事情对吗?我应该如何标记我的文本LineReader

谢谢!

标签: pythongensim

解决方案


这会起作用,但是因为 Gensim 的LineSentence课程(我假设你的意思)打破了空格上的标记,你的行......

and some white space. Multiple sentences, too. This is nuts!

...将成为单词标记列表:

['and', 'some', 'white', 'space.', 'Multiple', 
'sentences,', 'too.', 'This', 'is', 'nuts!']

这意味着像'space.', 'sentences,', &这样的标记'nuts!'将被视为单词——甚至可能会接收经过训练的单词向量(如果它们至少出现min_count多次)。

这可能不是你想要的——但也不一定是一个大问题。在足够大的语料库中,您关心的所有单词都会出现很多次,而没有这个连接标点符号问题,您可能仍然会为它们获得好的向量。

但更典型的是,您会预处理您的文本以去除该标点符号,或者将其与带有额外空格分隔符的单词分开。(当你这样做时,标点符号本身就变成了某种“单词”。)


推荐阅读