【问题标题】:Find adjectives related to noun input查找与名词输入相关的形容词
【发布时间】:2012-07-15 08:06:42
【问题描述】:

我想尝试根据用户在搜索框中输入的词来确定用户的个性特征。这是一个例子:

搜索词:“计算机”

检测到的个性/描述符:分析性、逻辑性、系统性、系统性


我知道这项任务非常重要。我以前使用过 WordNet,但我不确定它是否包含每个名词节点的形容词云。词性标注本身就是一头野兽,所以我不确定建立自己的语料库并搜索与关键字共存的形容词词频是否是最好的主意,但我将在下面解释。

我目前正在使用维基百科转储,在删除停用词(and、or、of、to、a 等...)后处理每篇文章的词频。我的想法是可能在整个语料库中搜索形容词(使用 WordNet 进行 POS 标记)和名词(例如形容词 logical 经常与名词 computer共存) >),并根据词干形容词的相对频率,判断它在语义上是否与名词相关。潜在的应用是巨大的。


另一个想法是给名词加上词干,搜索以该词干开头的形容词,然后搜索该形容词的同义词。示例:

搜索词:“计算机”

词干:“计算-”

带词干的形容词:计算

同义词:???


问题是名词的形容词形式并不总是有形容词形式,有些名词词干会匹配到非常错误的形容词。 *不好*例子:

搜索词:“running”(技术上是动名词,但仍然是名词)

词干:“run-”

带词干的形容词:流鼻涕

同义词:不是我想要的词。想找到像“运动”、“有动力”、“有纪律”这样的词


这是以前做过的事情吗?你对我如何处理这个问题有什么建议吗?这几乎就像我正在为文档中的“重要”单词生成形容词云一样。

编辑:我意识到这个问题没有“正确”的答案。我将奖励赏金给提出具有最佳理论潜力的方法的人。

【问题讨论】:

    标签: semantic-markup wordnet semantic-analysis part-of-speech


    【解决方案1】:

    假设您有大量的计算资源可以解决这个问题,我建议您使用诸如超空间语言模拟 (HAL) 之类的简单方法来为您的 Wikipedia 转储构建一个 Term X Term 矩阵。那么,你的算法可能是这样的:

    • 给定一个查询词/术语,找到它的 (HAL) 向量。
    • 对于向量,找出权重最高的形容词成分。
      • 要有效地执行此操作,您可能希望使用字典(如 WordNet)来预处理您的术语列表(即由 HAL 提取的术语),以便您知道(在处理查询之前)哪些可以用作形容词。
    • 对于每个形容词,在您的 HAL 空间中找到 N 个最相似的向量。
      • 可选:您可以通过查找在您的搜索词中同时出现的词来缩小此列表。

    这种方法基本上是在代码和数据结构方面为了简化而牺牲了内存和计算效率。然而,对于我认为你想要的东西,它应该做得很好。第一步将为您提供最常与查询词相关的形容词,而 HAL 空间中的向量相似性(第 3 步)将提供范式相关的词(大致可以相互替换,所以如果您开始使用某种形容词,就其与查询词的关系而言,您应该得到更多的形容词“喜欢它”),这应该是您正在寻找的“云”的一个相当好的代理。

    【讨论】:

    • 这听起来不错。我正在和其他几个人一起工作,我们的计算资源并不像完成这样的事情所需要的那样令人印象深刻,但我们已经考虑使用亚马逊的一些高性能计算机集群来进行更密集的计算像这样处理。我们的机器刚刚完成了 16 小时的运行,以处理整个 Wikipedia 转储并计算原始数据中每个单词的词频。 20GB 哑 -> 100GB 在数据库中。
    • @Jon 感谢您的赏金! 16 小时仍然比我 10 年前尝试做类似事情时的速度要快。祝你好运!
    【解决方案2】:

    WordNet 没有您需要的东西 - 它(几乎)不包含有关非同义词或未分层链接的单词之间关系的信息(椅子->家具)等。

    只需使用 OpenNLP (http://opennlp.apache.org) 并解析大量文本 - OpenNLP 解析器将检测句子中的动词-形容词/名词-形容词,从而让您构建关系数据库。 此时剩下的就是根据预定义的形容词列表过滤数据库。

    【讨论】:

    • 有趣。我没有遇到过这个。您能否澄清关于根据形容词列表过滤数据库的含义?
    • 从大量文本中构建名词形容词数据库会给每个名词留下大量形容词。诚然,在许多情况下会有一些高频词,但长尾将在很大程度上无法使用,除非您将其与您感兴趣的预定义形容词列表相匹配:使用您的示例 - 保持个性特征,删除物理描述( “高”、“运动”等)。
    • 嗯,这就是我在原始帖子中所暗示的 - 使用形容词频率的接受阈值(即只接受与名词共存超过 X 次的形容词)。也许我应该从建立一个一般的人格特征形容词列表(几百个)开始,然后搜索这些。我将把这个开放一段时间,看看其他人可能会提出什么建议,但这是一个很好的起点。
    • 使用 OpenNLP 的主要优点是它“理解”句子——它也能够将形容词与它们所指的名词匹配,而不仅仅是检测句子中的所有形容词。这将显着减少关系数据库中的噪音 - 您仍然应该使用接受阈值来消除错误(或来自奇怪的文本;-))匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多