比较两个字符串的含义

3
有没有办法通过意义来比较短字符串,而不是按字符比较呢?我尝试在谷歌上搜索过,但所有的搜索结果都是关于比较字符、长度等方面的。我并不想要现成的解决方案,只是想知道需要 "挖掘" 的方向。
提前感谢您。

1
请您能否提供一个示例?您使用的是哪种编程语言? - WasteD
@WasteD 基本示例如下: 问题:一部关于斯巴达的电影叫什么名字? 正确答案:300、三百 回答A:「300」→ 正确; 回答B:「少于300」→ 错误; 因此,我使用相同的标签(300),它可以在正确答案中找到,但是对于「答案B」来说是错误的,因为我们「否定」了正确答案。希望你理解我的意思。 - P. Savrov
我正在使用Java,但我认为这并不重要。 - P. Savrov
我认为这很困难,也许你应该将答案发送到类似Google API之类的东西,但我不知道是否存在这样的东西... - WasteD
2个回答

0

您的主题不够清晰。当您按意义比较字符串时,需要定义相等的级别。例如,“我有10美元”和“我的口袋里有10美元。在您的定义中它们是否相等?有时候字符串中含有暗示的意义。


是的,这正是我所需要的。对于我的情境来说,它是相等的。 - P. Savrov
我发现了这样一个服务:https://api.ai,他们提供能够学习的人工智能。也许这正是我需要的。 - P. Savrov

0

这是对一个非常类似的已关闭的问题的回答,该问题想要比较两个列表['apple', 'spinach', 'clove']['fruit', 'vegetable', 'spice']之间的上下文,使用了Google知识图谱搜索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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接