需求描述:聊天机器人数据库里,各种语言混杂在一起,没有标明语种,特别是(中/英/韩/日/其他小语种)。
Raw Data描述:
- 一个会话(用会话ID区分)里有多个来回,每次来回都记录了:客人问句Q+机器人的答案A(会话ID去重)
- 既可以按照客人问句Q来检测语种、也可以按照机器人答案A来检测语种(两个字段都可以检测语种);
- 按道理机器人是按照客人提问的语种来提供答案的(Q&A语种匹配准确率如何?)。
第一步:
好久没用,Rgui 和 R studio版本得先更新成4.0.5了,才能安装各种包。
第二步:安装各种包
install.packages("tidyverse")
install.packages("readxl")
install.packages("textcat")
install.packages("cld3")
第三步:读取各种包
library(tidyverse)
library(readr)
library(textcat)
library(cld3)
第四步:读取Excel数据源
data <- read_xlsx("会话明细.xlsx")
第五步:将数据先按照【会话ID】去个重,再根据【Bot答案】和【客人问句】这两个字段,用detect_language都分别判断一下语种
data %>%
select(会话ID,答案,客人问句) %>%
group_by(会话ID)%>%
filter(row_number()==1) %>%
mutate(language1=detect_language(答案),
language2=detect_language(客人问句))->temp
第六步:存成csv格式
write.csv(temp,"语言检测.csv")
R结果验证:
- 首先,韩语和泰语在导出的CSV表中显示成乱码,如图。但判断结果大多一致,不太影响语种判断结果;
- 原始数据:44889条,去重后:26805条;
- Q和A两个字段,语种判断结果一致的比例:90.5%
- 不一致的2547条中, 特别是很多机器人回答结果是en的会很容易在客人问句中被判断成pt,如图
- 输出结果中,用机器人答案判断的语种结果(排除NA外)一共是15种,而客人问句里除了NA一共是72种语言类别(可能那么多小语种都用机器人EN话术兜底了),除了熟悉的那几种之外(EN=英,ZH=中/繁体,KO=韩,JA=日,TH=泰,FR=法语,RU=俄罗斯,IT=意大利),其他小语种还真挺难辨认到底是啥语种的:
结论:
感觉用机器人答案A会更准确一些(因为客人问句可能千奇百怪、机器人回复的答案会更标准一些,更有利于机器判断语种)
-END-
下一期:清洗 + 词频统计