首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么快速文本产生<\s>作为VSM的第一个条目?

为什么快速文本产生<\s>作为VSM的第一个条目?
EN

Stack Overflow用户
提问于 2022-02-08 15:38:43
回答 1查看 111关注 0票数 0

我使用的是一个大的德语语料库,我已经清除了所有特殊的字符/数字/标点符号。每一行包含一个句子。

正在运行

代码语言:javascript
复制
fastText/./fasttext skipgram -input input.txt -output output.txt
-minCount 2 -minn 2 -maxn 8 -dim 300 -ws 5

返回一个以<\s>作为第一个条目的VSM。

根据我对它的理解,文档中还有一些空白被解释为标记。

对吗?

我怎样才能摆脱它们和/或VSM中的<\s>

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-02-08 21:41:13

按照惯例,fasttext工具将输入文件中的任何换行符转换为伪词标记'<\s>',以表示字符串的结尾('EOS')。

请参阅Python绑定Markdown文档中的讨论:

https://github.com/facebookresearch/fastText/blob/main/python/README.md#important-preprocessing-data--encoding-conventions

换行符用于分隔文本行。特别是,如果遇到换行符,EOS令牌就会附加到一行文本中。唯一的例外是,如果令牌的数量超过字典头中定义的MAX_LINE_SIZE常量。这意味着,如果文本不是由换行符分隔的,例如fil9数据集,则它将被分解为带有令牌的MAX_LINE_SIZE的块,并且EOS令牌不会被追加。

令牌的长度是UTF-8字符的数目,方法是考虑字节的前两位来识别多字节序列的后续字节。在选择子单词的最小和最大长度时,了解这一点尤其重要。此外,EOS令牌(如Dictionary中所指定的)被认为是一个字符,不会被分解为子单词。

(虽然在该文档中只提到了Python绑定,但它肯定是在核心C++代码中定义/实现的,特别是dictionary.cc文件。)

为了消除这个单词标记,您必须删除输入文件中的所有换行符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71036635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档