检查Python中单词之间的相似性或同义词

问题描述 投票:0回答:1

我想找到单词的同义词。

如果单词是tall building,那么我想查找该单词的所有同义词,例如"long apartment ,large building"

我用过Spacy。

import en_core_web_sm
nlp = en_core_web_sm.load()

LOOP
nlp('tall building').similarity(nlp(mytokens[i]))

我不能使用它,因为它需要很多时间

neither I can use PhraseMatcher for this

请帮助我

预先感谢

python nlp nltk spacy
1个回答
1
投票

[您可以尝试使用漂亮的汤来解析在线同义词库中的数据,或者使用python模块,例如[py-thesaurus]:https://pypi.org/project/py-thesaurus/

 from bs4 import BeautifulSoup as soup
 from urllib.request import urlopen as uReq
 from urllib.error import HTTPError




def find_synonym(string):
    """ Function to find synonyms for a string"""


    try:

        # Remove whitespace before and after word and use underscore between words
        stripped_string = string.strip()
        fixed_string = stripped_string.replace(" ", "_")
        print(f"{fixed_string}:")

        # Set the url using the amended string
        my_url = f'https://thesaurus.plus/thesaurus/{fixed_string}'
        # Open and read the HTMLz
        uClient = uReq(my_url)
        page_html = uClient.read()
        uClient.close()

        # Parse the html into text
        page_soup = soup(page_html, "html.parser")
        word_boxes = page_soup.find("ul", {"class": "list paper"})
        results = word_boxes.find_all("div", "list_item")

        # Iterate over results and print
        for result in results:
            print(result.text)

    except HTTPError:
        if "_" in fixed_string:
            print("Phrase not found! Please try a different phrase.")

        else:
            print("Word not found! Please try a different word.")


if __name__ == "__main__":
    find_synonym("hello ")
© www.soinside.com 2019 - 2024. All rights reserved.