【问题标题】:Stanford GloVe's lack of punctuation?斯坦福手套没有标点符号?
【发布时间】:2015-10-21 00:01:59
【问题描述】:

我知道GloVe 通过注意经常同时出现的内容等来训练向量,但是为什么不包括逗号和句点?对于任何 NLP 来说,具有向量表示似乎是一个重要特征。我意识到像 (king - man = queen) 这样的东西对 (word - , = ?) 没有意义,但是有没有办法表示标点符号和数字?

是否有包含此类内容的预制数据集?这甚至会起作用吗?

我尝试使用自己的数据集训练 GloVe,但遇到了分隔单词之间的标点符号(带有空格)等问题。

【问题讨论】:

    标签: machine-learning nlp stanford-nlp


    【解决方案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

        这不是一个好的解决方案,但可以通过某种方式解决。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-16
          • 2016-10-12
          • 1970-01-01
          • 2019-03-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多