自然语言数据预处理中经常会涉及到同义词替换,比如计算两个句子的相似度中,把一个词的两个同义词利用同义词替换技术转换为同一个词,那么就提高了相似度计算的可靠性。学习自然语言处理的同学肯定都会做到数据预处理的工作,下面分享我最近写的一个程序,希望能为从事同样工作的同学提供那么一点帮助,也希望自己的程序能够得到指点。
程序中设计到分词技术和同义词表,分词采用了哈工大的pyltp,其官方文档链接为http://pyltp.readthedocs.io/zh_CN/latest/。同义词表是利用哈工大的同义词词林(扩展版)进行预处理保留每个词的前两项得来的,原版下载链接为https://www.ltp-cloud.com/download/。
我采用的同义词词表是下面这种结构:
人 士
人类 生人
人手 人员
劳力 劳动力
匹夫 个人
家伙 东西
者 手
每人 各人
该人 此人
人民 民
下面是同义词替换程序(注释比较详细,这里不再赘述程序具体实现方式):
from pyltp import Segmentor
class SynonymsReplacer:
def __init__(self, synonyms_file_path, cws_model_path):
self.synonyms = self.load_synonyms(synonyms_file_path)
self.segmentor &