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 (将#修改为@)