我理解GloVe通过注意经常共同发生的事情等来训练向量,但是如何不包括逗号和句号?对于任何NLP,似乎具有矢量表示是一个重要的特征。我意识到像(王 - 男=女王)这样的东西(词 - ,=?)是没有意义的,但有没有办法表示标点符号和数字?
是否有包含此类内容的预制数据集?这甚至会起作用吗?
我尝试使用自己的数据集训练GloVe,但是我遇到了在单词等之间分隔标点符号(带空格)的问题。
答案 0 :(得分:2)
我已经使用了Senna使用的单词vector,我正在查看词汇表。
我肯定会看到标点符号的条目。
处理数字的技巧是用0替换每个数字,然后学习每个模式的分布。例如,1999映射到0000,01-01-2015映射到00-00-0000等...
塞纳有这些模式的条目,如0000等......
我将查看GloVe并尽快更新此答案......
答案 1 :(得分:2)
预先训练过的GloVe载体确实有标点符号,是什么让你觉得它们不是?至少来自http://nlp.stanford.edu/projects/glove/的Wikipedia 2014 + Gigaword 5(6B令牌)嵌入了#34;,#34; "。"," - "和其他包括,只需下载这些单词向量,并验证它yourseld,它们是纯文本格式,所以它很容易做到。
答案 2 :(得分:0)
将标点符号作为单个标记用于生成单词矢量也是完全正常的。另请参阅word2vec论文。我假设预构建的word2vec数据集有标点符号。而且我确信预制的手套矢量也有标点符号。
有许多标记符将标点符号分隔为单独的单词。我肯定知道的是ARK Tweet Tokenizer。
答案 3 :(得分:0)
我已经使用了这样的数字和节拍的对话。这不是一个好方法,但稍微有用。
对于数字我将所有数字转换为"NUM"
例如: 178 = "NUM"
或654 = "NUM"
对于点动我将它们转换为“PUNC”
例如: apple, orange, banana = apple "PUNC" orange "PUNC" banana
这不是一个好的解决方案,但无论如何都有效。