ChineseTextualInference

ChineseTextualInference project including chinese corpus build and inferecence model, 中文文本推断项目,包括88万文本蕴含中文文本蕴含数据集的翻译与构建,基于深度学习的文本蕴含判定模型构建.
项目地址:https://github.com/liuhuanyong/ChineseTextualInference

项目介绍

文本间的推理关系,又称为文本蕴含关系 (TextualEntailment),作为一种基本的文本间语义联系,广泛存在于自然语言文本中。简单的来说文本蕴含关系描述的是两个文本之间的推理关系,其中一个文本作为前提(premise),另一个文本作为假设(hypothesis),如果根据前提P能够推理得出假设H,那么就说P蕴含H,记做P->H,这跟一阶逻辑中的蕴含关系是类似的。
目前关于文本蕴含还存在两个问题:
一,中文文本蕴含数据集严重匮乏
目前,关于文本蕴含的研究主要还是集中在英文,如评测中常常使用的SNLI数据集与MultiNIL:
1) The Stanford Natural Language Inference (SNLI) 是斯坦福大学NLP组发布的文本蕴含识别的数据集。SNLI由人工标注的,一共包含570K个文本对,其中训练集550K,验证集10K,测试集10K,一共包含三类entailment,contradiction,neutra,上节提到的例子就是出自此数据集
2) The Multi-Genre Natural Language Inference (MultiNLI)是一个众包数据集,包含433k个文本对。

然而,在中文中,还没有出现大规模的文本蕴含数据集, CCL2018有一个文本蕴含的评测,由北京语言大学于东老师团队组织的,发布了一个数量级为10W的评测集,这是目前最大的一个文本蕴含数据集,与英文还有很大的差距。
二,语言之间存在根本性差异
在英文SNIL数据集中,准确率已经达到将近90%,这个准确率是在50W+数据集上得到的,而中文与英文有实质性差异,英文的文本蕴含模型无法直接应用到中文的文本蕴含当中,我们需要在中文上做技术上的PK,做本土化的创新.

因此,本项目将尝试完成两个任务:
一, 完成与SNIL规模相当的中文文本蕴含数据集
二, 基于构建起的中文文本蕴含数据集, 尝试完成模型实验

项目架构

image

中文文本蕴含数据集构建

1,英文文本蕴含数据

A snowboarder on a wide plain of snow    A snow field with a snowboarder on it   entailment
A snowboarder on a wide plain of snow   A snowboarder gliding over a field of snow  neutral
A snowboarder on a wide plain of snow   A snowmobile in a blizzard  neutral
An older women tending to a garden. The lady is cooking dinner  contradiction
An older women tending to a garden. The lady is weeding her garden  neutral
An older women tending to a garden. The lady has a garden   entailment
A man in a black shirt overlooking bike maintenance.    A man destroys a bike.  contradiction
A man in a black shirt overlooking bike maintenance.    A man watches bike repairs. entailment
A man in a black shirt overlooking bike maintenance.    A man learns bike maintenance.  neutral
A man in a black shirt is looking at a bike in a workshop.  A man is wearing a red shirt    contradiction
A man in a black shirt is looking at a bike in a workshop.  A man is in a black shirt   entailment
A man in a black shirt is looking at a bike in a workshop.  A man is deciding which bike to buy neutral

2,中英文文本语料翻译
translate_duba.py

class Translate:def __init__(self):return'''获取html'''def get_html(self, url):headers = {'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 'r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3','Connection': 'keep-alive'}req = request.Request(url, headers=headers)page = request.urlopen(req).read()page = page.decode('utf-8')return page'''解析翻译答案'''def extract_answers(self, content):selector = etree.HTML(content)answer = selector.xpath('//div[@class="in-base"]/div/div/text()')[0]return answer'''翻译主函数'''def translate(self, query):url = 'http://www.iciba.com/{}'.format(query)html = self.get_html(url)try:answer = self.extract_answers(html)except Exception as e:answer = queryreturn answer

3,翻译后中文文本蕴含数据集

一名身穿灰色T恤的男子站在一辆卡车和一棵小树的停车收费表旁边。  这辆卡车是绿色的。   neutral
摩托车排成一排,靠在一座建筑物上。    停车场里到处都是汽车。 contradiction
一男一女在街角接吻。  一对男女在接吻。    entailment
一名身穿绿色制服,手里拿着球的足球运动员被他的一些队友举起,而另一名穿红色球衣的球员则伸手去接球。 这位绿色球员受伤了,他的队友正在帮助他。 neutral
一个男人坐在阳光下,坐在长凳上,弹着班卓琴,而一只加拿大鹅看着。   有个人站着弹吉他。   contradiction
一个棕色头发的女人,对着麦克风唱歌。   一个女人唱歌。 entailment
一位穿着深色外套的女士正坐着,身边有许多人。   一位女士正试图在节日举行饮食比赛。   neutral
一位水泥工人正在一家服装店外的一条新人行道上工作。   一名工人在工作。    contradiction
巴尔从后板凳上扔出莫洛托夫鸡尾酒,就像金里奇曾经做过的那样。   金里奇和巴尔都把莫洛托夫鸡尾酒从后排扔出去了。 entailment
一群儿童和成年人在树林里的一条土路上骑自行车。 一个家庭在乡下骑自行车。    neutral
两个人手拿着一根杆子在外面工作。    两个男人在外面捕鲸。  contradiction
这是一张男人睡在墙上或冥想的照片。   一个人在墙附近。    entailment
当三个人经过时,人行道上有建筑。 他们最近拆毁了那里的一座建筑物。    neutral
老太太坐在满是鲜花的房间里。  这位老太太正在厨房里做蛋糕。  contradiction
游泳者潜入蓝色游泳池水中。   有一个人在水里。    entailment

4, 中英文文本蕴含数据集规模

语言类型 句子数 蕴含句子对数
中文 100W 88W
英文 116W 96W

中文文本蕴含模型实验

本实验采用两个双向LSTM对前提Premise和假设hypothsis进行编码,最周将两个句子表征进行拼接,送入全连接层进行三分类
1, 网络层如下:

    embedding_layer = Embedding(self.VOCAB_SIZE + 1,self.EMBEDDING_DIM,weights=[self.embedding_matrix],input_length=self.TIME_STAMPS,trainable=False,mask_zero=True)left_input = Input(shape=(self.TIME_STAMPS,), dtype='float32')right_input = Input(shape=(self.TIME_STAMPS,), dtype='float32')encoded_left = embedding_layer(left_input)encoded_right = embedding_layer(right_input)shared_lstm = self.create_base_network(input_shape=(self.TIME_STAMPS, self.EMBEDDING_DIM))left_output = shared_lstm(encoded_left)right_output = shared_lstm(encoded_right)merged = concatenate([left_output, right_output], axis=-1)merged = Dropout(0.3)(merged)merged = BatchNormalization()(merged)pred = Dense(self.NUM_CLASSES, activation='softmax', name='softmax_prediction')(merged)optimizer = SGD(lr=0.001, momentum=0.9)model = Model(inputs=[left_input, right_input], outputs=pred)model.compile(loss='categorical_crossentropy',optimizer=optimizer,metrics=['accuracy'])model.summary()

2, 实验结果

模型 训练集 测试集 训练集准确率 测试集准确率
Bilstm 30w 10W 0.56 0.54

总结

1, 本项目针对中文文本蕴含数据集数量不足的问题,提出了一个中文文本蕴含数据集,规模达到88W
2, 借助翻译方法进行英文中文转换,前提是英文句子较为短小,短句的翻译效果还是不错的
3, 原先打算使用百度API进行翻译,但是使用次数有限制,因此转而以金山毒霸代之,使用在线翻译结果
4, 本项目实现了一个以LSTM进行文本蕴含三分类的模型,准确率不是很高,只有0.54左右,后期还有很大的优化空间

any question? 请联系我:
邮箱:lhy_in_blcu@126.com
csdn:https://blog.csdn.net/lhy2014
我的自然语言处理项目: https://liuhuanyong.github.io/

中文文本蕴含计算项目(88万中文文本蕴含数据集+中文文本蕴含模型)相关推荐

  1. 千言数据集:文本相似度——数据读取部分

    以下学习笔记来源于 Coggle 30 Days of ML(22年1&2月) 链接:https://coggle.club/blog/30days-of-ml-202201 比赛链接:htt ...

  2. 基于中文主观性知识库的句子主观性计算项目

    ChineseZhuguanDectection 项目地址:https://github.com/liuhuanyong/ZhuguanDetection Chinese Subjective Dec ...

  3. 中文幽默语料库构建与计算项目(幽默等级识别,幽默类型识别,隐喻类型识别,隐喻情绪识别)

    ChineseHumorSentiment chinese Humor Detection or Computation based on corpus and nlp methods, 基于语料库与 ...

  4. python中文相似度计算_doc2vec计算文本相似度--python实现

    Boblee人工智能硕士毕业,擅长及爱好python,基于python研究人工智能.群体智能.区块链等技术,并使用python开发前后端.爬虫等. 1.背景 doc2vec的目标是创建文档的向量化表示 ...

  5. 腾讯AI Lab开源大规模高质量中文词向量数据,800万中文词随你用

    今日,腾讯AI Lab 宣布开源大规模.高质量的中文词向量数据.该数据包含800多万中文词汇,相比现有的公开数据,在覆盖率.新鲜度及准确性上大幅提高,为对话回复质量预测和医疗实体识别等自然语言处理方向 ...

  6. 文本分类Keras RNN实践——应用腾讯和百度中文词向量

    中文词向量 深度学习在NLP领域大展身手,而深度学习处理文本,离不开文本的向量化. 英语独特的语法规则,使得单用空格就能将句子中的单词分割开来,从而取得词向量,这极大简化了英语的NLP预处理过程,工业 ...

  7. python中文文本分词_SnowNLP:?中文分词?词性标准?提取文本摘要,?提取文本关键词,?转换成拼音?繁体转简体的 处理中文文本的Python3 类库...

    SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和Te ...

  8. 采访IK Analyzer 中文分词器开源项目作者林良益(十三)

    转自: http://www.iteye.com/magazines/43-ik-analyzer 众所周知,全文搜索几乎已经成为每个网站的必须提供的基本功能之一,用Lucene构造一个"索 ...

  9. python中文相似度_基于TF-IDF、余弦相似度算法实现文本相似度算法的Python应用

    基于TF-IDF算法.余弦相似度算法实现相似文本推荐--文本相似度算法,主要应用于文本聚类.相似文本推荐等场景. 设计说明 使用jieba切词,设置自定义字典 使用TF-IDF算法,找出文章的关键词: ...

  10. 基于逻辑回归,支持向量机,朴素贝叶斯以及简单深度学习文本分类方法(BiLSTM、CNN)实现的中文情感分析,含数据集可直接运行

    基于逻辑回归,支持向量机,朴素贝叶斯以及简单深度学习文本分类方法(BiLSTM.CNN)实现的中文情感分析,含数据集可直接运行 完整代码下载地址:中文情感分析 中文情感分析 本项目旨在通过一个中文情感 ...

最新文章

  1. 有认知会推理!视觉大模型的未来不只靠表征
  2. 23种设计模式之适配器模式(Adapter)
  3. NSMutableParagraphStyle /NSParagraphStyle
  4. 【尺取或dp】codeforces C. An impassioned circulation of affection
  5. 案例解析丨Spark Hive自定义函数应用
  6. hdfs java api读写
  7. Zabbix(二)通过API在zabbix系统中查看、删除及创建监控主机
  8. CS 213 Fall 2018: Android Project
  9. [转贴]Unix-Center.Net需要您的帮助
  10. windows批处理脚本导入注册表不弹出确认框
  11. MTK 多帧算法集成
  12. 股票交易软件排行及简介
  13. ECSHOP图书销售网站模板
  14. #最短路径,最小生成树#CH 6202 黑暗城堡
  15. d3.js之中国地图
  16. CS5211AN可兼容CH7511B,是一款EDP到LVDS的转换器
  17. Exp1 PC平台逆向破解 20164302 王一帆
  18. 小米progtx笔记本快捷键驱动安装
  19. 微信小程序:隐藏和显示功能
  20. 线索树找*p的中序后继且中序遍历 二叉线索树

热门文章

  1. java简单实现购物车添加,查询,修改,结算商品程序
  2. **Android 图片处理系列:图片压缩处理
  3. PHP+MYSQL【学生信息管理系统】(极简版)
  4. 初谈“信息安全审计”
  5. 盛语小智教育机器人是骗人的_教育机器人哪个好 盛语小智教育机器人带你发家致富...
  6. 湘潭大学c语言大作业难过吗,C语言程序设计参考答案(湘大出版社)
  7. [渝粤教育] 同济大学 外科手术技能教学 参考 资料
  8. 网络热帖惹争议,程序员高薪现象你怎么看?
  9. NET Reflector
  10. html怎么修改背景图片,css怎么设置背景图片?