python - 设置Word2Vec的参数为一个实例
问题描述
我有一个包含大约 280 万条文本的数据库(更准确地说是推文,所以它们是短文本)。我将干净的推文(删除主题标签、标签、停用词......)放在一个称为标记列表的列表中sentences
(因此它包含每个推文的标记列表)。
在这些步骤之后,如果我写
model = Word2Vec(sentences, min_count=1)
我获得了大约 400,000 个单词的词汇。
这只是一次尝试,我需要一些帮助才能以最合适和一致的方式设置参数( size
, window
, min_count
, workers
, sg
) 。Word2Vec
考虑到我的目标是使用
model.most_similar(terms)
(terms
单词列表在哪里)
在标记列表列表中查找sentences
与 中包含的单词最相似的单词terms
。
中的词terms
属于同一主题,我想看看文本中是否还有其他词可能与该主题有关。
解决方案
通常,通常的做法是:
- 从默认值开始,让事情最初在基线水平上工作,也许只在数据的一个更快的工作子集上工作。
- 为了您的目的,开发一种客观的方法来确定一个模型是否比另一个模型更好。这可能开始于一些有代表性的探针的一堆临时的、手动的结果比较 - 但应该成为一个可以自动为每个变体模型评分的过程,根据一些定性的、可重复的过程给“更好”的模型更高的分数。
- 要么一个一个地修改参数,要么对许多排列进行大量搜索,以找出哪个模型在你的评分中表现最好。
另外:word2vec 结果的质量几乎总是通过丢弃非常罕见的单词来提高,例如那些只出现一次的单词。(默认值min_count
是5
有充分理由的。)
该算法不能从只出现一次或几次的词中生成好的词向量。它需要多个对比鲜明的用法示例。但是,考虑到语料库中单词使用的典型 Zipfian 分布,有很多这样的稀有词。丢弃它们可以加快训练速度,缩小模型,并消除其他词训练中本质上的“噪音”——让那些剩余的词向量变得更好。(如果你真的需要这些词的向量——收集更多数据。)
推荐阅读
- primefaces - 直通不添加属性
- php - 如何使用 laravel 修复循环插入文件(获取不可见数据)
- content-management-system - 寻找与自定义数据库集成的 CMS
- spartacus-storefront - 替换现有 ProductListComponent 时激活路由的问题
- javascript - V8 中的垃圾收集器在分配给新对象(浅拷贝)时如何处理 Promise?
- ray - 在前台的 docker 容器中运行 ray 服务,而不是守护程序模式
- azure-blob-storage - 503 - 从 .net core 3.1 Web API 重定向到 Azure Blob Url 时服务不可用
- python - 从枚举具有重复值的函数返回枚举
- react-native - 如何为 React Native 的 TextInput 中的部分文本应用样式?
- ruby - 如何使用 (**) 运算符而不是 pow 实现相同的功能