聊天机器人语料批量处理-自动提取关键词并自动写入文件

聊天机器人的语料目前仍是基于规则来添加语料

介绍:目前市面上的大多数聊天机器人(如图灵机器人)仍是基于规则来人为添加语料(尤其是专业问题)。
作者在工作过程中发现专业问题语料数量庞大,人为去添加关键词耗时耗力。因此,这里向大家介绍本人
批量提取每句Question关键词并批量逐行写入文件的方法,供大家参考使用。

备注:经过事前测试,发现jieba.analyse.extract_tags()方法能较好的适用于专业词汇抽取,
因此本文首选其作为提取关键词的方法。代码如下。


import
os import jieba import jieba.analyse import csv #设置工作环境为chuli文件夹内 os.chdir("C://Users//dicey//desktop//chuli") #rough.csv为3万8千行待处理Question rough = csv.reader(open("rough.csv",'r',encoding='utf-8')) # r表示以读的方式打开文件 #把每句Question提取出的关键词逐行写入keys.csv文件 keys = csv.writer(open("keys.csv",'w',encoding='utf-8')) #w表示以写的方式打开文件 #检查rough.csv文件的 #直接打印row会显示每句为一个数组的二元数组 #使用''.join(row)打印会显示每句各占一行的字符串 for row in rough: print(''.join(row))

 

打印效果如下图。

 

开始正餐:

# 根据每句Question的字符数长度不同,分成以下5种情况
#
当字符数小于等于15时,提取关键词topK=2,也就是提取两个关键词。其余以此类推。 # keys为csv.writer这个类的一个对象,调用.writerow()这个方法,把得到的关键词(以逗号分隔)逐行写入keys.csv文件
# 当Question字数已经超过100时,不论多长,也只最多提取6个关键词
for row in rough: if len(''.join(row))<= 15: key_words = jieba.analyse.extract_tags(''.join(row), topK=2,withWeight=False, allowPOS=()) ## ''.join(row)目的在于把数组型元素row转换成字符串 keys.writerow(key_words) elif 15<len(''.join(row))<=30: key_words = jieba.analyse.extract_tags(''.join(row), topK=3, withWeight=False, allowPOS=()) keys.writerow(key_words) elif 30<len(''.join(row))<=50: key_words = jieba.analyse.extract_tags(''.join(row), topK=4, withWeight=False, allowPOS=()) keys.writerow(key_words) elif 50<len(''.join(row))<=100: key_words = jieba.analyse.extract_tags(''.join(row), topK=5, withWeight=False, allowPOS=()) keys.writerow(key_words) else: key_words = jieba.analyse.extract_tags(''.join(row), topK=6, withWeight=False, allowPOS=()) keys.writerow(key_words)

## 最后关闭以上两个csv文件
(open('rough.csv','r',encoding='utf-8')).close
(open('keys.csv','w',encoding='utf-8')).close

## 这里
(open('rough.csv','r',encoding='utf-8')).close略显臃肿,
## 推荐事先用变量来承接:roughfile = open('rough.csv','r',encoding='utf-8'),
## keysfile = open('keys.csv','w',encoding='utf-8')
## 之后需关闭文件即可写成roughfile.close(),keysfile.close()

 

最后把keys.csv文件中的字段在EXCEL中稍作处理即可生成如下以空格隔开的关键词列表,复制粘贴到原Question文件中,顺序能正常匹配。

部分展示如下图:

 

posted @ 2018-09-24 12:29  EuniceFirewood  阅读(2174)  评论(0编辑  收藏  举报