nlp - Wordpiece 标记化与传统的词形还原?
问题描述
我正在研究 NLP 预处理。在某些时候,我想实现一个上下文相关的词嵌入,作为一种辨别词义的方式,我正在考虑使用 BERT 的输出来做到这一点。我注意到 BERT 使用 WordPiece 标记化(例如,“playing”->“play”+“##ing”)。
现在,我使用标准标记器对文本进行预处理,该标记器在空格/一些标点符号上进行分割,然后我有一个词形还原器(“playing”->“play”)。我想知道 WordPiece 标记化比标准标记化 + 词形还原有什么好处。我知道 WordPiece 可以帮助解决词汇量不足的问题,但还有什么别的吗?也就是说,即使我最终没有使用 BERT,我是否应该考虑将我的分词器 + 词形还原器替换为 wordpiece 分词?在什么情况下会有用?
解决方案
word-piece 标记化在多个方面都有帮助,并且应该比 lemmatizer 更好。由于多种原因:
- 如果你有“playful”、“playing”、“played”这些词要词形化为“play”,它可能会丢失一些信息,例如
playing
现在时和played
过去时,这在单词中不会发生 -片标记化。 - 词片标记涵盖了所有的词,甚至是字典中没有出现的词。它拆分单词并且会有单词片段标记,这样,您将拥有分割单词片段的嵌入,这与删除单词或替换为“未知”标记不同。
使用 word-piece 标记化而不是 tokenizer+lemmatizer 只是一种设计选择,word-piece 标记化应该表现良好。但是您可能需要考虑,因为词片标记化增加了标记的数量,而词形还原不是这种情况。
推荐阅读
- javascript - Laravel 的奇怪行为 - 反应路由器和返回按钮
- javascript - 如何将数据存储在 json 文件中?
- mysql - 是否可以生成更多表的 MYSQL 查询,其中一个表列的值作为更多查询列?
- go - 如何从结构中指定我们想要使用的字段?
- web-services - .NET 的简单 HTTP 服务器库
- javascript - 给定 url 字符串、参数、响应代码和 JSON 中的响应,以最大的灵活性伪造后端的方法
- postgresql - Postgresql CHECK IN 列表约束的自定义错误消息
- python - 在 Django 中为 BooleanField 使用不同的数据库值
- java - 带有 RoutingConnectionFactory 的 Spring RabbitListener
- elasticsearch - 从脚本 ElasticSearch/Painless 中的 aggs 获取结果