斯坦福手套没有标点符号?
Posted
技术标签:
【中文标题】斯坦福手套没有标点符号?【英文标题】:Stanford GloVe's lack of punctuation? 【发布时间】:2015-10-21 00:01:59 【问题描述】:我知道GloVe 通过注意经常同时出现的内容等来训练向量,但是为什么不包括逗号和句点?对于任何 NLP 来说,具有向量表示似乎是一个重要特征。我意识到像 (king - man = queen) 这样的东西对 (word - , = ?) 没有意义,但是有没有办法表示标点符号和数字?
是否有包含此类内容的预制数据集?这甚至会起作用吗?
我尝试使用自己的数据集训练 GloVe,但遇到了分隔单词之间的标点符号(带有空格)等问题。
【问题讨论】:
【参考方案1】:将标点符号作为词向量生成的单个标记处理是完全可以的,也很常见。另见例如 word2vec 论文。我假设预建的 word2vec 数据集有标点符号。而且我确信预先构建的手套向量也有标点符号。
有很多分词器将标点符号分隔为单独的单词。我肯定知道的是 ARK Tweet Tokenizer。
【讨论】:
【参考方案2】:我对 Senna 使用的词向量进行了一些研究,我正在查看词汇表。
http://ml.nec-labs.com/senna/
我确实看到了标点符号条目。
处理数字的一个技巧是用 0 替换每个数字,然后学习每个模式的分布。例如 1999 映射到 0000,01-01-2015 映射到 00-00-0000 等等...
Senna 有这些模式的条目,例如 0000 等...
我会查看 GloVe 并尝试尽快更新此答案...
【讨论】:
【参考方案3】:预训练的 GloVe 向量确实有标点符号,是什么让您认为它们没有?至少 Wikipedia 2014 + Gigaword 5 (6B tokens) set from http://nlp.stanford.edu/projects/glove/ 包含 ", ".", "-" 和其他的嵌入,只需下载这些词向量,并自行验证,它们是纯文本格式,所以很容易做到。
【讨论】:
啊,好吧,我用的是text8默认训练集【参考方案4】:我使用过这种数字和标点符号的转换。这不是一个好方法,但稍微有用。
对于数字,我将所有数字转换为 "NUM"
。例如: 178 = "NUM"
或 654 = "NUM"
对于标点符号,我将它们转换为“PUNC”。例如: apple, orange, banana = apple "PUNC" orange "PUNC" banana
这不是一个好的解决方案,但可以通过某种方式解决。
【讨论】:
以上是关于斯坦福手套没有标点符号?的主要内容,如果未能解决你的问题,请参考以下文章
斯坦福公开课-机器学习2.监督学习应用-梯度下降(吴恩达 Andrew Ng)