fasttext - FastText 窗口大小
问题描述
我目前正在研究 fastText 无监督学习。我想澄清一些出现在 fastText 文档中的上下文窗口。
在用于训练 fastText 模型的 python 的 fasttext 库https://github.com/facebookresearch/fastText/tree/master/python的描述中有不同的参数,其中一个参数是,
- ws:上下文窗口的大小
我的输入文件包含带有 2 - 3 个标记的行。
例如。,
- 高级数据库管理员
- 高级点网程序员
- 网络管理员
- 首席程序员(大型机)
默认窗口大小 5。在这里,在上面的示例中,我有标记计数小于窗口大小的行。如果窗口大小大于文档长度会发生什么?
解决方案
FastText(和 word2vec 等相关算法)将尽可能多地使用上下文窗口。
例如,假设窗口大小为 5,输入标记:
['Senior', 'Database', 'Administrator']
当使用“中心”词进行训练时'Senior'
,该算法将准备好在任一方向咨询多达 5 个词。
但是,前面有 0 个单词'Senior'
,后面只有 2 个单词'Senior'
,所以只有后面的 2 个单词会被视为邻居。
(不会像空白邻居一样使用“插入值”,也不会出现任何“渗透”到相邻文本。)
另外两个相关的注意事项要记住:
- 这些算法确实需要相邻的单词才能进行任何训练,因此任何只有一个单词的文本基本上都是无操作的。(如果碰巧有一个词只单独出现,在训练结束时你可能仍然会看到它的向量,但在我熟悉的实现中,这将只是一个随机初始化的起始向量,完全未经实际使用示例训练。)
- 大多数实现将通过不*总是使用您声明的窗口大小来模拟相邻词的加权,而是,对于每次通过特定目标中心词,选择一个随机窗口大小,从 1 到您选择的窗口-尺寸。通过这种方式,近邻总是训练的一部分,而更远的单词更经常被跳过。
推荐阅读
- python-3.x - 我的代码一直循环最后一部分并且不会打印
- mongodb - 在 fastify-session 上编写 set/get/destroy 方法以将会话存储到 MongoDB 中?
- python-3.x - pandas pivot 或 groupby 多列和控制列
- javascript - 如何在工具提示中显示 html 书中的注释?
- python - 如何在跨度级别使用 Qt 富文本中的 padding、margin 等?
- java - 为每个会话的一级缓存分配内存
- php - 在此 Codeigniter 3 应用程序中更新用户密码失败的原因是什么?
- tomcat - 关于 org.apache.tomcat.util.net。受体
- ansible - Ansible - 如何将上一个提示的答案包含到下一个提示中
- jetty - 在 Ktor 中使用 Jetty 嵌入式服务器获取客户端证书