gpt4 book ai didi

图数据库 - 如何处理多语言数据

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

我正在尝试使用多语言图形数据库,但我正在努力寻找如何实现最佳模型。

我目前的提议是制作两种节点类型:MovieMovieTranslation .
Movie将所有关系保持为 likes , related , ratingscomments . MovieTranslation包含所有可翻译的数据( titleplotgenres )。一个 Movie节点不包含这些属性,只有 original_title .
MovieMovieTranslationtranslation 绑在一起关系。

当我查询节点时,我会检查它们是否有 translation与查询语言环境的关系(例如 en_US)。如果为 true,则将翻译与主节点合并作为结果。

我认为这种方式可能不是最好的,但我想不出更好的方式。

你们对数据库模型有更好的建议吗?将不胜感激。

如果您需要此信息,我正在使用 neo4j。

谢谢,
维尼修斯。

最佳答案

我建议也将原始标题移动到它自己的节点,称为 MovieTitle。以这种方式“复杂化”您的模型实际上应该“简化”(或至少标准化)您的查询,因为您总是在一个地方寻找电影片名(也用于索引和搜索)。

您假设电影只有一个原始标题,但事实并非如此。韩日联合制作将至少有两部原创作品。各种类型的日本电影都在电影院和 VHS 上以不同的日本原创电影发行。

与原始标题的概念不同的是特定语言标题的概念。在不同的中文国家发行的同一部电影将有不同的中文片名,这些片名被认为更适合特定的本地观众。

获取原标题:MATCH (c:Country)<-[HAS_NATIONALITY]-(m:Movie)-[HAS_TITLE]->(t:MovieTitle)-[HAS_NATIONALITY]->(c:Country)
WHERE m.id = 1
RETURN COLLECT(t.title, c.country_code)

在中国获得原标题:MATCH (m:Movie)-[HAS_TITLE]->(t:MovieTitle)-[HAS_NATIONALITY]->(c:Country)
WHERE c.country_code == "CN"
RETURN m, COLLECT(t.title, c.country_code)

获取所有语言标题:MATCH (m:Movie)-[HAS_TITLE]->(t:MovieTitle)-[HAS_NATIONALITY]->(c:Country)-[HAS_LANGUAGE]->(l:Language)
RETURN m, COLLECT(t.title, l.language_code)

获取所有中文标题:MATCH (m:Movie)-[HAS_TITLE]->(t:MovieTitle)-[HAS_NATIONALITY]->(c:Country)-[HAS_LANGUAGE]->(l:Language)
WHERE l.language_code == "zh"
RETURN m, COLLECT(t.title, c.name)

我会将情节和流派分成它们自己的节点。有人认为不同的国家电影院有独特的类型,但如果西部片和武士剧都是时代剧的子类型,那么你想在时代剧搜索中找到它们。

我仍然会有翻译节点的想法,但不要将它们与您正在建模的域混淆。它应该是领域无知的,并且——对于像“浪漫喜剧”这样的简单词/短语——几乎应该是 GraphAware 在 2025 年发布的第三方图形插件。

获取特定电影的法语类型片名:MATCH (m:Movie)-[HAS_GENRE*]->(g:Genre)-[HAS_TRANSLATION]->(t:Translation)-[HAS_LANGUAGE]->(l:Language)
WHERE m.id = 100 AND l.language_code = "fr"
RETURN COLLECT(t.translation)

获取所有浪漫喜剧:MATCH (m:Movie)-[HAS_GENRE*]->(g:Genre)-[HAS_TRANSLATION]->(t:Translation)
WHERE t.translation = "comédie romantique"
RETURN m

与电影标题和类型不同,情节完全更简单,因为您将电影故事建模为文本块,而不是作为域对象本身。也许稍后您可以对情节文本进行文本分析以找到主题、性别偏见等,并在图表中对此进行建模。

获取特定电影的法语情节:MATCH (m:Movie)-[HAS_PLOT]->(p:Plot)-[HAS_LANGUAGE]->(l:Language)-[HAS_TRANSLATION]->(t:Translation)
WHERE m.id = 100 AND t.translation = "French"
RETURN p.plot

(请将 Cypher 查询视为伪代码。我没有制作图表并对其进行测试。)

关于图数据库 - 如何处理多语言数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32162287/

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