假设在2个不同的数据框中
df1
,df2
我有2列
df1['film'] = pd.Series(['Beavis & Butthead', 'Bonnie e Clyde', 'Adam & Eve'])
df2['film'] = pd.Series(['Beavis und Butthead', 'Bonnie & Clyde', 'Adam et Eve'])
多种不同语言的电影标题。 (实际上,我的专栏比这大得多,并且不完全包含带有&符号的标题或不同语言的“the”一词的等价物。因此,我不能使用诸如停用词之类的东西来解决我的问题,因为它也会修改这些标题“破坏性”的一种方式。)
合并这两列上的数据框时,这些记录都不会产生匹配,如果我做了一个简单的
str.replace
,它们仍然不会全部匹配,因为无法从任何标题中知道&符号是否应该是'e'、'et'、'und'、'and' 等
由于我没有电影标题所用的所有语言的列表,我该如何解决这个问题?
您可以尝试使用法学硕士来获得正式的英文头衔吗?使用
dpq
包和 gpt-3.5-turbo
,编写如下提示即可获取官方英文标题。
# Define messages
messages = [
{
"role": "system",
"content": "You only return the official english title of a movie. Pay special attention to the correct spelling."
},
{
"role": "user",
"content": "Very bad trip"
},
{
"role": "assistant",
"content": "The Hangover"
},
]
# Add new function
dpq_agent.return_film_title = dpq_agent.generate_function(messages)
# Translate titles
df1['film_english'] = dpq_agent.return_film_title(df1['film'])
df2['film_english'] = dpq_agent.return_film_title(df2['film'])
然后,合并两个数据框。在您的示例中,这将返回:
film1 film_english film2
0 Beavis & Butthead Beavis and Butt-Head Beavis und Butthead
1 Bonnie e Clyde Bonnie and Clyde Bonnie & Clyde
免责声明:我是dpq的作者。