gpt4 book ai didi

string - 使用 SPARQL 查询与字符串的最佳匹配?

转载 作者:行者123 更新时间:2023-12-04 15:41:39 24 4
gpt4 key购买 nike

我有一个电影片名列表,想在 DBpedia 中查找这些片名。对于像“导演”这样的元信息。但是我很难用 SPARQL 识别正确的电影,因为标题有时不完全匹配。

如何使用 SPARQL 从 DBpedia 获得电影标题的最佳匹配?

一些有问题的例子:

  • 我的 list :“死而复生”与 DBpedia:“死而复生”
  • 我的 list :“Hachi”与 DBpedia:“Hachi:狗的故事”

  • 我目前的做法是查询 DBpedia endpoint对于所有电影,然后通过检查单个标记(不带标点符号)进行过滤,按标题排序并返回第一个结果。例如。:
    SELECT ?resource ?title ?director WHERE {
    ?resource foaf:name ?title .
    ?resource rdf:type schema:Movie .
    ?resource dbo:director ?director .
    FILTER (
    contains(lcase(str(?title)), "die") &&
    contains(lcase(str(?title)),"hard")
    )
    }
    ORDER BY (?title)
    LIMIT 1

    这种方法非常慢,有时也会失败,例如:
    SELECT ?resource ?title ?director WHERE {
    ?resource foaf:name ?title .
    ?resource rdf:type schema:Movie .
    ?resource dbo:director ?director .
    FILTER (
    contains(lcase(str(?title)), "hachi")
    )
    }
    ORDER BY (?title)
    LIMIT 10

    正确的结果排在第二位:
      resource                                          title                        director
    http://dbpedia.org/resource/Chachi_420 "Chachi 420"@en http://dbpedia.org/resource/Kamal_Haasan
    http://dbpedia.org/resource/Hachi:_A_Dog's_Tale "Hachi: A Dog's Tale"@en http://dbpedia.org/resource/Lasse_Hallström
    http://dbpedia.org/resource/Hachiko_Monogatari "Hachikō Monogatari"@en http://dbpedia.org/resource/Seijirō_Kōyama
    http://dbpedia.org/resource/Thachiledathu_Chundan "Thachiledathu Chundan"@en http://dbpedia.org/resource/Shajoon_Kariyal

    任何想法如何解决这个问题?甚至更好: 通常如何使用 SPARQL 查询与字符串的最佳匹配?

    谢谢!

    最佳答案

    我采用了正则表达式方法 mentioned in the comments并提出了一个效果很好的解决方案,比我能用 bif:contains 得到的任何东西都要好:

       SELECT ?resource ?title ?match strlen(str(?title)) as ?lenTitle strlen(str(?match)) as ?lenMatch

    WHERE {
    ?resource foaf:name ?title .
    ?resource rdf:type schema:Movie .
    ?resource dbo:director ?director .
    bind( replace(LCASE(CONCAT('x',?title)), "^x(die)*(?:.*?(hard))*(?:.*?(with))*.*$", "$1$2$3") as ?match )
    }

    ORDER BY DESC(?lenMatch) ASC(?lenTitle)

    LIMIT 5

    它并不完美,所以我仍然愿意接受建议。

    关于string - 使用 SPARQL 查询与字符串的最佳匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38671325/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com