【问题标题】:Compare two strings by meaning按含义比较两个字符串
【发布时间】:2016-11-22 15:53:36
【问题描述】:

是否有任何解决方案如何比较短字符串不是按字符,而是按含义?我试过用谷歌搜索,但所有搜索结果都是关于比较字符、长度等。 我不是在问你关于即用型解决方案的问题,只是告诉我我需要“挖掘”的地方。

提前谢谢你。

【问题讨论】:

  • 你能举个例子吗?你用的是什么编程语言?
  • @WasteD 基本示例如下: 问题:关于斯巴达人的电影有什么名字?正确答案:300,树百给出答案 A:“300”-> 正确;给出答案 B:“小于 300”-> 错误;所以,我使用相同的标签(300),它可以在正确的答案中找到,但在“答案 B”的情况下 - 它是错误的,因为我们“否定”了正确的答案。我希望你能得到我。
  • 我用的是Java,不过我觉得没关系。
  • 我认为这真的很难,也许您应该将您的答案发送到 Google API 之类的东西,但如果存在这样的东西我不...

标签: string compare


【解决方案1】:

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

【讨论】:

  • 是的,这正是我所需要的。就我而言,它是平等的
  • 我发现了这样的服务:api.ai 他们提供能够学习的人工智能。也许这就是我需要的。
【解决方案2】:

回答一个非常相似的closed question,它想要比较两个列表['apple', 'spinach', 'clove']['fruit', 'vegetable', 'spice'] 之间的上下文,它使用Google Knowledge Graph Search 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]

【讨论】:

    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2017-07-18
    • 1970-01-01
    相关资源
    最近更新 更多