【问题标题】:Finding synonyms and related words to given word查找给定单词的同义词和相关单词
【发布时间】:2020-03-26 03:05:35
【问题描述】:

我想要实现的是,找到所有与给定单词相关的、相似的、同义词、相关的单词。 例如,如果我给出一个词:

virus 预期结果可能是 bacteria, medicine, illnes, coronavirus 等。

基本上,当您想到这个词时会想到的所有内容。

是否有任何基于人工智能的 API,可能是 AWS 或谷歌云引擎服务,我可以使用它来实现这个结果?还是开源数据库和/或工具?

【问题讨论】:

    标签: search artificial-intelligence word


    【解决方案1】:

    试试

    https://www.datamuse.com/api/

    这正是您要搜索的内容,而且是免费的。

    【讨论】:

      【解决方案2】:

      这会做你想做的。

      import pandas as pd
      import nltk.corpus
      from nltk.corpus import stopwords, wordnet
      from nltk.tokenize import word_tokenize
      from nltk.stem import PorterStemmer, WordNetLemmatizer
      from collections import defaultdict
      from nltk.corpus import wordnet   
      from nltk.tokenize import word_tokenize
      
      
      df = pd.read_csv("C:\\your_path\\synonyms_antonyms.csv")
      
      
      # pick a field from a dataframe; convert to text and make all lower case
      df['review_text'] = df['review_text'].astype('str')
      df['review_text'] = df['review_text'].str.lower()
      df['review_text'] = df['review_text'].str.split(',')
      
      df.dtypes
      
      
      my_list = df['review_text'].values.tolist()
      
      s = ','.join(str(v) for v in my_list)
      
      
      type(s)
      tokens = word_tokenize(s)
      
      # Store results in a dict where key is token and value is a set of synonyms and antonyms 
      tokens_syns, tokens_ant = defaultdict(set), defaultdict(set)
      
      for token in tokens:
          for synset in wordnet.synsets(token):
              for lemma in synset.lemmas():
                  tokens_syns[token].add(lemma.name()) # Add the synonyms
                  if lemma.antonyms():    # Check if antonyms are available
                      tokens_ant[token].add(lemma.antonyms()[0].name()) # Add antonyms
      
      
      # Check for 'skin'
      token = 'skin'
      print(f'For the word "{token}":')
      print('The synonyms are:', tokens_syns[token])
      print('The antonyms are:', tokens_ant[token])
      
      
      # Conclusion:
      For the word "skin":
      The synonyms are: {'scramble', 'pelt', 'shinny', 'pare', 'cutis', 'hide', 'shin', 'bark', 'sputter', 'struggle', 'clamber', 'scrape', 'tegument', 'peel', 'skin'}
      The antonyms are: set()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-29
        • 2014-07-06
        • 1970-01-01
        • 1970-01-01
        • 2015-08-15
        • 2012-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多