python - Gensim 的 word2vec 返回尴尬的向量
问题描述
给定格式中经过大量清理的输入
model_input = [['TWO people admitted fraudulently using bank cards (...)'],
['All tyrants believe forever',
'But history especially People Power (...) first Bulatlat']]
word2vec 与更明显的结果一起返回超特定向量,例如
{'A pilot shot dogfight Pakistani aircraft returned India Friday freed Islamabad called peace gesture following biggest standoff two countries years':
<gensim.models.keyedvectors.Vocab at 0x12a93572828>,
'This story published content partnership POLITICO':
<gensim.models.keyedvectors.Vocab at 0x12a93572a58>,
'Facebook says none 200 people watched live video New Zealand mosque shooting flagged moderators underlining challenge tech companies face policing violent disturbing content real time':
<gensim.models.keyedvectors.Vocab at 0x12a93572ba8>}
它似乎发生在更多的文件上,我很难相信它们每个都出现了五次以上。
我正在使用以下代码来创建我的模型:
TRAIN_EPOCHS = 30
WINDOW = 5
MIN_COUNT = 5
DIMS = 250
vocab_model = gensim.models.Word2Vec(model_input,
size=DIMS,
window=WINDOW,
iter=TRAIN_EPOCHS,
min_count=MIN_COUNT)
我做错了什么,我得到了如此无用的向量?
解决方案
Word2Vec
期望它的训练语料库——它的sentences
论点——是一个可重复的 Python 序列,其中每个项目本身就是一个单词列表。
您的model_input
列表似乎是一个列表,其中每个项目本身就是一个列表,但这些列表中的每个项目都是一个完整的句子,其中包含许多单词作为字符串。结果,在它期望单个单词标记(作为字符串)的地方,你给它完整的未标记的句子(作为字符串)。
如果您将文本分解为单词列表,并将这些单词列表的序列作为训练数据提供给模型,那么您将获得单词标记的向量,而不是句子字符串。
推荐阅读
- objective-c - 如何将 Giant 项目 Objective C 转换为 Swift
- android - 将搜索字符串额外作为意图传递给 Google 自动完成
- vue.js - Vue路由器-beforeEach,检测点击相同路径
- ios - iOS 谷歌地图标记,带有箭头的圆形气泡内的照片
- php - 从过滤器类别中删除“全部”并设置另一个 jquery
- javascript - 数据表滚动条有时会消失
- python - 如何使用python将一系列HSV值的所有像素设置为openCV中的另一个值?
- ruby-on-rails - redirect_to new_user_session_path 不显示 Flash 消息
- javascript - 离子验证突出显示不适用于离子选择
- android - 删除部分 ImageSpan 时删除整个 ImageSpan