微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NLP:查找与特定形容词匹配的名词

如何解决NLP:查找与特定形容词匹配的名词

我使用 this resource 导入了英语中使用的前 5,000 个名词(名为“top_nouns”的列表)。另外,我有一个形容词/颜色列表:

color_list = ["black","red","white","green"]

我的目标是找到与我的每种颜色最相关的名词。例如,我想找到“雪白”、“酒红”或“草绿”之类的对。

我已经尝试了两件事:

  1. 我使用了 wordnet.wup_similarity 函数
list = []
list_temp = []

for word1 in color_list:
    for word2 in top_nouns:
        wordFromColor_list = wn.synsets(word1)
        wordFromTop_nouns = wn.synsets(word2)
        if wordFromColor_list and wordFromTop_nouns:
            s = wordFromColor_list[0].wup_similarity(wordFromTop_nouns[0])
            list_temp = [wordFromColor_list[0].lemmas()[0].name(),wordFromTop_nouns[0].lemmas()[0].name(),s]
            list.append(list_temp)

sorted_list = sorted(list,key=lambda x: x[2])
print(sorted_list)
  1. 我存储了名词的每个可能同义词集的定义,并检查是否包含我的一种颜色。
list = []
list_temp = []

for n in top_nouns:
  if wn.synsets(n):
    for l in range(len(wn.synsets(n))):
      synset = wn.synsets(n)[l]
      deFinition = wn.synset(synset.name()).deFinition()
      list_temp = [n,deFinition]
      list.append(list_temp)
      #print(f"DeFinition of {n}: {deFinition}")

import pandas as pd
df = pd.DataFrame(list,columns = ['noun','def'])
for c in color_list:
    df_filter = df[df['def'].str.match(c)]
    print(df_filter)

第一种方法完全没用,因为对我来说没有直接明显的组合:['White','follower',0.75],['White','traveler','dissenter','collector',0.75])。第二种方法产生了两种可用的组合(柠檬黄或盐白),但我正在寻找比这更多的名词颜色组合。

总而言之,是否有比上面介绍的更好的方法来找到“雪白”或“酒红”等名词颜色组合?请让我知道我是否可以改进我的问题,我一般是 NLP 和 Python 的初学者。感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。