5

通常人们想通过使用词袋方法从文本中获取特征,计算单词并计算不同的度量,例如 tf-idf 值,如下所示: How to include words as numeric feature in classification

但我的问题不同,我想从一个单词中提取一个特征向量。例如,我想知道土豆和炸薯条在向量空间中彼此靠近,因为它们都是由土豆制成的。我想知道牛奶和奶油也很接近,热和温暖,石头和坚硬等等。

这个问题叫什么?我可以通过查看大量文档来了解单词的相似性和特征吗?

我不会用英文实现,所以我不能使用数据库。

4

3 回答 3

5

嗯,文本数据的特征提取(例如 tf-idf)是基于统计的。另一方面,您正在寻找意义(语义)。因此,没有像 tf-idef 这样的方法适合您。

在 NLP 中存在 3 个基本级别:

  1. 形态分析
  2. 句法分析
  3. 语义分析

(更高的数字代表更大的问题:))。形态学以大多数语言而闻名。句法分析是一个更大的问题(它处理诸如什么是动词、某个句子中的名词……)。语义分析面临最大的挑战,因为它处理的意义很难在机器中表示,有很多例外并且是特定于语言的。

据我了解,您想知道单词之间的一些关系,这可以通过所谓的依赖树库(或只是树库)来完成:http ://en.wikipedia.org/wiki/Treebank 。它是一个句子的数据库/图形,其中一个单词可以被认为是一个节点,关系是一个弧。捷克语有很好的树库,英语也会有一些,但对于许多“覆盖较少”的语言来说,找到一个可能是个问题......

于 2013-02-11T11:52:17.127 回答
1

用户1506145,

这是我过去使用的一个简单想法。收集大量类似维基百科文章的短文档。对每个文档进行字数统计。对于第 i 个文档和第 j 个单词,让

I = 文件数,

J = 字数,

x_ij = 第 j 个单词在第 i 个文档中出现的次数,并且

y_ij = ln( 1+ x_ij)。

令 [U, D, V] = svd(Y) 为 Y 的奇异值分解。所以 Y = U*D*transpose(V)),U 为 IxI,D 为对角线 IxJ,V 为 JxJ。

您可以使用 (V_1j, V_2j, V_3j, V_4j) 作为 R^4 中第 j 个单词的特征向量。

于 2013-02-11T14:24:12.080 回答
1

我很惊讶以前的答案没有提到词嵌入。词嵌入算法可以为给定数据集中的每个词生成词向量。这些算法可以从上下文中推断词向量。例如,通过查看以下句子的上下文,我们可以说“聪明”和“聪明”在某种程度上是相关的。因为上下文几乎相同。

He is a clever guy He is a smart guy

可以构造一个共现矩阵来做到这一点。但是,效率太低了。为此目的设计的一种著名技术称为 Word2Vec。可以从以下论文中研究。
https://arxiv.org/pdf/1411.2738.pdf
https://arxiv.org/pdf/1402.3722.pdf

我一直用它来写瑞典语。它在检测相似词方面非常有效,而且完全无监督。

可以在 gensim 和 tensorflow 中找到一个包。

于 2017-06-26T10:32:20.207 回答