提问人:Danillo Pereira 提问时间:11/16/2023 更新时间:11/16/2023 访问量:35
代码无法准确识别多字词,导致误报
Code fails to accurately identify multi-word terms, causing false positives
问:
我的问题是包含 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 个或更多单词的术语匹配,或者因为我有类似的术语,例如:按钮或控制台,我的代码似乎通过了。我是初学者,我不知道如何解决这个问题。
我需要完整的术语匹配,并且该术语可以在检查表中较大文本的中间找到,这似乎效果很好。
任何帮助都是值得赞赏的
谢谢
答: 暂无答案
评论