簡體   English   中英

按含義比較兩個字符串

[英]Compare two strings by meaning

是否有任何解決方案如何不按字符而是按含義比較短字符串 我試過用谷歌搜索,但所有搜索結果都是關於比較字符、長度等。 我不是在問你現成的解決方案,只是告訴我方法,我需要“挖掘”的地方。

先感謝您。

您的主題不夠清楚。 當按含義比較字符串時,需要定義相等級別。 例如“我有10美元”和“口袋里有10美元。它們在您的定義中是否相等?有時在字符串中有隱含的含義。

回答一個非常相似的封閉問題,該問題想要比較兩個列表['apple', 'spinach', 'clove']['fruit', 'vegetable', 'spice']之間的上下文,使用Google Knowledge圖搜索API

import json
from urllib.parse import urlencode
from urllib.request import urlopen

def get_descriptions_set(query: str) -> set[str]:
    descriptions = set()
    kg_response = get_kg_response(query)
    for element in kg_response['itemListElement']:
        if 'description' in element['result']:
            descriptions.add(element['result']['description'].lower())
    return descriptions

def get_kg_response(query: str) -> str:
    api_key = open('.api_key').read()
    service_url = 'https://kgsearch.googleapis.com/v1/entities:search'
    params = {
        'query': query,
        'limit': 10,
        'indent': True,
        'key': api_key,
    }
    url = f'{service_url}?{urlencode(params)}'
    response = json.loads(urlopen(url).read())
    return response

def main() -> None:
    list_1 = ['apple', 'spinach', 'clove']
    list_2 = ['fruit', 'vegetable', 'spice']
    list_1_kg_descrpitons = [get_descriptions_set(q) for q in list_1]
    print('\n'.join(f'{q} {descriptions}'
                    for q, descriptions in zip(list_1, list_1_kg_descrpitons)))
    list_2_matches_context = [
        d in descriptions
        for d, descriptions in zip(list_2, list_1_kg_descrpitons)
    ]
    print(list_2_matches_context)

if __name__ == '__main__':
    main()

輸出:

apple {'watch', 'technology company', 'fruit', 'american singer-songwriter', 'digital media player', 'mobile phone', 'tablet computer', 'restaurant company', 'plant'}
spinach {'video game', 'plant', 'vegetable', 'dish'}
clove {'village in england', 'spice', 'manga series', 'production company', '2018 film', 'american singer-songwriter', '2008 film', 'plant'}
[True, True, True]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM