代码无法准确识别多字词,导致误报

Code fails to accurately identify multi-word terms, causing false positives

提问人:Danillo Pereira 提问时间:11/16/2023 更新时间:11/16/2023 访问量:35

问:

我的问题是包含 2 个或更多单词的术语。我面临着当前实现无法准确匹配此类术语的问题。

这是我的代码:

import pandas as pd

# Load Checker and Terminology DataFrames
checker_df = pd.read_excel('C:\\Checker.xlsx', header=None)
terminology_df = pd.read_excel('C:\\Terminology.xlsx')

# Add a new column for the result and initialize with 'FAIL'
checker_df['Result'] = 'FAIL'

# Iterate over rows in the Checker DataFrame
for index, row in checker_df.iterrows():
    termA = str(row.iloc[0])  # Convert to string and handle NaN
    termB = str(row.iloc[1])  # Convert to string and handle NaN

    # Check if there is at least one row in the terminology sheet where both terms match
    if any(
        (termA.lower() in str(terminology_df_row.iloc[0]).lower() or str(terminology_df_row.iloc[0]).lower() in termA.lower()) and
        (termB.lower() in str(terminology_df_row.iloc[1]).lower() or str(terminology_df_row.iloc[1]).lower() in termB.lower())
        for _, terminology_df_row in terminology_df.iterrows()
    ):
        checker_df.at[index, 'Result'] = 'PASS'

# Save the result to Excel without styling
checker_df.to_excel('C:\\Result.xlsx', engine='openpyxl', index=False, header=['Term A', 'Term B', 'Result'], na_rep='')

我会尽量更清楚地说明我的目标。我需要检查英语和其他语言的官方术语可能存在的问题。

我有两个 excel 文件。一个名为 Terminology 的参考,另一个是 Checker,我将英文文本放在 A 列中,将翻译放在 B 列中,运行脚本后,我将结果放在 C 列中。

例如,在我的术语文件中:

A列 B列
PS5™主机 主机PS5™
按钮 博唐
三角形按钮 Botão Triângulo
安慰 安慰
弹出按钮 Botão de Ejeção
PlayStation®5 数字版主机 控制台 PlayStation®5 edição digital

在我的Checker文件中,我有:

A列 B列
PS5™主机 康德鞋底 PSd5
我有一台 PS5™ 主机 Eu tenho 控制台 PS5™
PS5™主机 安慰
按钮 博唐
博唐 博唐
三角形按钮 博唐

这是我的结果文件:

A列 B列 C列
PS5™主机 康德鞋底 PSd5 失败
我有一台 PS5™ 主机 Eu tenho 控制台 PS5™ 通过
PS5™主机 安慰 通过
按钮 博唐 通过
博唐 博唐 失败
三角形按钮 博唐 通过

我的问题是,在第 3 行,我应该失败。该术语与术语文件中的术语不完全匹配。最后一行也是如此,如果只有一个单词与具有 2 个或更多单词的术语匹配,或者因为我有类似的术语,例如:按钮或控制台,我的代码似乎通过了。我是初学者,我不知道如何解决这个问题。

我需要完整的术语匹配,并且该术语可以在检查表中较大文本的中间找到,这似乎效果很好。

任何帮助都是值得赞赏的

谢谢

Python 本地化

评论


答: 暂无答案