【问题标题】:Finding which words are likely to occur with word X找出单词 X 可能出现的单词
【发布时间】:2018-04-09 14:58:29
【问题描述】:

找出在某个词 X 附近频繁出现哪些词的最佳方法是什么? (注意:NOT 哪些词与词 X 最相似)

我有 GloVe 词向量,所以每个向量代表一些词在不同环境中的分布(每个维度都是一个环境)。那么我如何从这些环境中检索单词呢?换句话说,我如何检索仅在一个维度上相似的单词?

我尝试只在一个维度上寻找更接近 X 的单词,忽略其余的,但这给了我垃圾词。

附: 到目前为止,我是找到与单词 X 最接近的 N 个单词(通过余弦相似度),然后对这些单词应用 K-means 聚类。它工作得很好,但我担心N个最近的词不一定是出现在词X附近的词,而是出现在与词X相似的环境中的词。

编辑: 澄清:仅收集 n-gram 计数是不够的,因为我确实正在寻找一种仅使用向量的方法,即无需访问语料库本身。原因是一些免费提供的预训练向量是在 TB 数据上训练的。例如,如果可以以某种方式从预训练的向量中获取这些信息,那么存储整个 n-gram 计数以进行普通爬网将是非常浪费的。

【问题讨论】:

    标签: nlp stanford-nlp data-mining word2vec linguistics


    【解决方案1】:

    虽然我确实认为,简单的共现计数会更好,但您也可以使用许多嵌入方法来做到这一点。

    Word2vec 实际上构建了 两个 映射。一个编码器,一个解码器。

    我们通常只使用编码器,两个向量应该非常相似。但是为了找到共现词,显而易见的做法是用编码器进行编码,然后在解码器中找到最相似的向量。因为这些模型是上下文

    但请注意:大肆宣传的“神经词嵌入”实际上侧重于可替代性。我们可以用哪个词来代替。因此,您很可能首先看到同义词和此类词,然后是具有相似上下文但具有其他作用的词。

    使用基于简单计数的方法,您可以更好地控制它们的作用:预测单词一起出现的概率。

    【讨论】:

      【解决方案2】:

      如果您真正想要的是“哪些词出现在词 X 附近”,那么您根本不需要 word2vec/glove 中的那种“密集”词向量。只需扫描您的语料库,并计算共现(在您的兴趣窗口内)。

      然后您将获得准确的计数,而不是来自其他间接相关表示的一些估计。

      (如果您需要有关如何进行此类统计的更多指导,请搜索与 [单词共现矩阵] 相关的资源。)

      【讨论】:

      • 谢谢。我知道这一点。但是,我想要的是从经过训练的词向量中获取这些信息,而不是从语料库中获取。原因是我目前没有资源来扫描整个常见爬网,所以我试图找出一种方法来为此目的使用斯坦福 NLP 的免费常用爬网向量。
      • 我还没有看到从密集向量重建共现的方法,所以这可能属于“推测性研究项目”领域。并且为了测试任何预测共现的推测方法的有效性,您需要针对......真正的共现进行评估。 (如果你有一个完整训练的 word2vec NN,包括隐藏/输出权重,将其输出读取为共现的概率分布是合理的但效率低下。但是 AFAIK 斯坦福 NLP GloVe 向量,就像大多数预训练向量集一样,不要t 包括完整的 NN 模型。)
      • AWS 公共数据集页面上提到了另一个基于 Common Crawl 的项目 – aws.amazon.com/public-datasets/common-crawl/… – 并且可能有一个更易于管理的数据集(所有 5 克的总数),对您的公司仍然有用- 发生目的。
      猜你喜欢
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多