文本纠错pycorrector

原文链接:https://blog.csdn.net/javastart/article/details/107428483

这一段时间再研究身份证和面单识别项目,总发现一些识别准确率问题,在想办法提高识别率,突然看了一篇文字纠错方面资料,可以发现与ocr结合。开始收集纠错方面的框架,感觉网上评价pycorrector 这个项目不错

pycorrector

中文文本纠错工具。音似、形似错字(或变体字)纠正,可用于中文拼音、笔画输入法的错误纠正。python3.6开发。

pycorrector依据语言模型检测错别字位置,通过拼音音似特征、笔画五笔编辑距离特征及语言模型困惑度特征纠正错别字。

Demo

https://www.borntowin.cn/product/corrector

Question

中文文本纠错任务,常见错误类型包括:

  • 谐音字词,如 配副眼睛-配副眼镜
  • 混淆音字词,如 流浪织女-牛郎织女
  • 字词顺序颠倒,如 伍迪艾伦-艾伦伍迪
  • 字词补全,如 爱有天意-假如爱有天意
  • 形似字错误,如 高梁-高粱
  • 中文拼音全拼,如 xingfu-幸福
  • 中文拼音缩写,如 sz-深圳
  • 语法错误,如 想象难以-难以想象

当然,针对不同业务场景,这些问题并不一定全部存在,比如输入法中需要处理前四种,搜索引擎需要处理所有类型,语音识别后文本纠错只需要处理前两种, 其中'形似字错误'主要针对五笔或者笔画手写输入等。

Solution

规则的解决思路

  1. 中文纠错分为两步走,第一步是错误检测,第二步是错误纠正;
  2. 错误检测部分先通过结巴中文分词器切词,由于句子中含有错别字,所以切词结果往往会有切分错误的情况,这样从字粒度和词粒度两方面检测错误, 整合这两种粒度的疑似错误结果,形成疑似错误位置候选集;
  3. 错误纠正部分,是遍历所有的疑似错误位置,并使用音似、形似词典替换错误位置的词,然后通过语言模型计算句子困惑度,对所有候选集结果比较并排序,得到最优纠正词。

深度模型的解决思路

  1. 端到端的深度模型可以避免人工提取特征,减少人工工作量,RNN序列模型对文本任务拟合能力强,rnn_attention在英文文本纠错比赛中取得第一名成绩,证明应用效果不错;
  2. CRF会计算全局最优输出节点的条件概率,对句子中特定错误类型的检测,会根据整句话判定该错误,阿里参赛2016中文语法纠错任务并取得第一名,证明应用效果不错;
  3. seq2seq模型是使用encoder-decoder结构解决序列转换问题,目前在序列转换任务中(如机器翻译、对话生成、文本摘要、图像描述)使用最广泛、效果最好的模型之一。

Feature

模型

  • kenlm:kenlm统计语言模型工具
  • rnn_attention模型:参考Stanford University的nlc模型,该模型是参加2014英文文本纠错比赛并取得第一名的方法
  • rnn_crf模型:参考阿里巴巴2016参赛中文语法纠错比赛CGED2018并取得第一名的方法(整理中)
  • seq2seq_attention模型:在seq2seq模型加上attention机制,对于长文本效果更好,模型更容易收敛,但容易过拟合
  • transformer模型:全attention的结构代替了lstm用于解决sequence to sequence问题,语义特征提取效果更好
  • bert模型:中文fine-tuned模型,使用MASK特征纠正错字
  • conv_seq2seq模型:基于Facebook出品的fairseq,北京语言大学团队改进ConvS2S模型用于中文纠错,在NLPCC-2018的中文语法纠错比赛中,是唯一使用单模型并取得第三名的成绩
  • electra模型:斯坦福和谷歌联合提出的一种更具效率的预训练模型,学习文本上下文表示优于同等计算资源的BERT和XLNet

错误检测

  • 字粒度:语言模型困惑度(ppl)检测某字的似然概率值低于句子文本平均值,则判定该字是疑似错别字的概率大。
  • 词粒度:切词后不在词典中的词是疑似错词的概率大。

错误纠正

  • 通过错误检测定位所有疑似错误后,取所有疑似错字的音似、形似候选词,
  • 使用候选词替换,基于语言模型得到类似翻译模型的候选排序结果,得到最优纠正词。

思考

  1. 现在的处理手段,在词粒度的错误召回还不错,但错误纠正的准确率还有待提高,更多优质的纠错集及纠错词库会有提升,我更希望算法上有更大的突破。
  2. 另外,现在的文本错误不再局限于字词粒度上的拼写错误,需要提高中文语法错误检测(CGED, Chinese Grammar Error Diagnosis)及纠正能力,列在TODO中,后续调研。

Install

  • 全自动安装:pip install pycorrector
  • 半自动安装:
  1. git clone https://github.com/shibing624/pycorrector.git
  2. cd pycorrector
  3. python setup.py install

通过以上两种方法的任何一种完成安装都可以。如果不想安装,可以下载github源码包,安装下面依赖再使用。

安装依赖

  • kenlm安装
pip install https://github.com/kpu/kenlm/archive/master.zip
  • 其他库包安装
pip install -r requirements.txt

Usage

  • 文本纠错
  1. import pycorrector
  2. corrected_sent, detail = pycorrector.correct('少先队员因该为老人让坐')
  3. print(corrected_sent, detail)

output:

少先队员应该为老人让座 [[('因该', '应该', 4, 6)], [('坐', '座', 10, 11)]]

规则方法默认会从路径~/.pycorrector/datasets/zh_giga.no_cna_cmn.prune01244.klm加载kenlm语言模型文件,如果检测没有该文件,则程序会自动联网下载。当然也可以手动下载模型文件(2.8G)并放置于该位置。

  • 错误检测
  1. import pycorrector
  2. idx_errors = pycorrector.detect('少先队员因该为老人让坐')
  3. print(idx_errors)

output:

[['因该', 4, 6, 'word'], ['坐', 10, 11, 'char']]

返回类型是list[error_word, begin_pos, end_pos, error_type]pos索引位置以0开始。

  • 关闭字粒度纠错
  1. import pycorrector
  2. error_sentence_1 = '我的喉咙发炎了要买点阿莫细林吃'
  3. correct_sent = pycorrector.correct(error_sentence_1)
  4. print(correct_sent)

output:

'我的喉咙发炎了要买点阿莫西林吉', [['细林', '西林', 12, 14], ['吃', '吉', 14, 15]]

上例中发生误纠,如下代码关闭字粒度纠错:

  1. import pycorrector
  2. error_sentence_1 = '我的喉咙发炎了要买点阿莫细林吃'
  3. pycorrector.enable_char_error(enable=False)
  4. correct_sent = pycorrector.correct(error_sentence_1)
  5. print(correct_sent)

output:

'我的喉咙发炎了要买点阿莫西林吃', [['细林', '西林', 12, 14]]

默认字粒度、词粒度的纠错都打开,一般情况下单字错误发生较少,而且字粒度纠错准确率较低。关闭字粒度纠错,这样可以提高纠错准确率,提高纠错速度。

默认enable_char_error方法的enable参数为True,即打开错字纠正,这种方式可以召回字粒度错误,但是整体准确率会低;

如果追求准确率而不追求召回率的话,建议将enable设为False,仅使用错词纠正。

  • 加载自定义混淆集

通过加载自定义混淆集,支持用户纠正已知的错误,包括两方面功能:1)错误补召回;2)误杀加白。

  1. import pycorrector
  2. pycorrector.set_log_level('INFO')
  3. error_sentences = [
  4. '买iPhone差,要多少钱',
  5. '共同实际控制人萧华、霍荣铨、张旗康',
  6. ]
  7. for line in error_sentences:
  8. print(pycorrector.correct(line))
  9. print('*' * 53)
  10. pycorrector.set_custom_confusion_dict(path='./my_custom_confusion.txt')
  11. for line in error_sentences:
  12. print(pycorrector.correct(line))

output:

  1. ('买iPhone差,要多少钱', []) # "iPhone差"漏召,应该是"iphoneX"
  2. ('共同实际控制人萧华、霍荣铨、张启康', [['张旗康', '张启康', 14, 17]]) # "张启康"误杀,应该不用纠
  3. *****************************************************
  4. ('买iPhoneX,要多少钱', [['iPhone差', 'iPhoneX', 1, 8]])
  5. ('共同实际控制人萧华、霍荣铨、张旗康', [])

具体demo见example/use_custom_confusion.py,其中./my_custom_confusion.txt的内容格式如下,以空格间隔:

  1. iPhone差 iPhoneX 100
  2. 张旗康 张旗康

set_custom_confusion_dict方法的path参数为用户自定义混淆集文件路径。

  • 加载自定义语言模型

默认提供下载并使用的kenlm语言模型zh_giga.no_cna_cmn.prune01244.klm文件是2.8G,内存较小的电脑使用pycorrector程序可能会吃力些。

支持用户加载自己训练的kenlm语言模型,或使用2014版人民日报数据训练的模型,模型小(20M),准确率低些。

  1. from pycorrector import Corrector
  2. pwd_path = os.path.abspath(os.path.dirname(__file__))
  3. lm_path = os.path.join(pwd_path, './people_chars_lm.klm')
  4. model = Corrector(language_model_path=lm_path)
  5. corrected_sent, detail = model.correct('少先队员因该为老人让坐')
  6. print(corrected_sent, detail)

output:

少先队员应该为老人让座 [[('因该', '应该', 4, 6)], [('坐', '座', 10, 11)]]

具体demo见example/load_custom_language_model.py,其中./people_chars_lm.klm是自定义语言模型文件。

  • 英文拼写纠错

支持英文单词的拼写错误纠正。

  1. import pycorrector
  2. sent_lst = ['what', 'hapenning', 'how', 'to', 'speling', 'it', 'you', 'can', 'gorrect', 'it']
  3. for i in sent_lst:
  4. print(i, '=>', pycorrector.en_correct(i))

output:

  1. what => what
  2. hapenning => happening
  3. how => how
  4. to => to
  5. speling => spelling
  6. it => it
  7. you => you
  8. can => can
  9. gorrect => correct
  10. it => it
  • 中文简繁互换

支持中文繁体到简体的转换,和简体到繁体的转换。

  1. import pycorrector
  2. traditional_sentence = '憂郁的臺灣烏龜'
  3. simplified_sentence = pycorrector.traditional2simplified(traditional_sentence)
  4. print(traditional_sentence, '=>', simplified_sentence)
  5. simplified_sentence = '忧郁的台湾乌龟'
  6. traditional_sentence = pycorrector.simplified2traditional(simplified_sentence)
  7. print(simplified_sentence, '=>', traditional_sentence)

output:

  1. 憂郁的臺灣烏龜 => 忧郁的台湾乌龟
  2. 忧郁的台湾乌龟 => 憂郁的臺灣烏龜

Command Line Usage

  • 命令行模式

支持批量文本纠错。

  1. python -m pycorrector -h
  2. usage: __main__.py [-h] -o OUTPUT [-n] [-d] input
  3. @description:
  4. positional arguments:
  5. input the input file path, file encode need utf-8.
  6. optional arguments:
  7. -h, --help show this help message and exit
  8. -o OUTPUT, --output OUTPUT
  9. the output file path.
  10. -n, --no_char disable char detect mode.
  11. -d, --detail print detail info

case:

python -m pycorrector input.txt -o out.txt -n -d

输入文件:input.txt;输出文件:out.txt;关闭字粒度纠错;打印详细纠错信息;纠错结果以\t间隔

Evaluate

提供评估脚本pycorrector/utils/eval.py,该脚本有两个功能:

  • 构建评估样本集:自动生成评估集pycorrector/data/eval_corpus.json, 包括字粒度错误100条、词粒度错误100条、语法错误100条,正确句子200条。用户可以修改条数生成其他评估样本分布。
  • 计算纠错准召率:采用保守计算方式,简单把纠错之后与正确句子完成匹配的视为正确,否则为错。

执行该脚本后得到,规则方法纠错效果评估如下:

  • 准确率:320/500=64%
  • 召回率:152/300=50.67%

看来还有比较大的提升空间,误杀和漏召回的都有。

深度模型使用说明

安装依赖

pip install -r requirements-dev.txt

介绍

本项目的初衷之一是比对、共享各种文本纠错方法,抛砖引玉的作用,如果对大家在文本纠错任务上有一点小小的启发就是我莫大的荣幸了。

主要使用了多种深度模型应用于文本纠错任务,分别是前面模型小节介绍的conv_seq2seqseq2seq_attention、 transformerbertelectra,各模型方法内置于pycorrector文件夹下,有README.md详细指导,各模型可独立运行,相互之间无依赖。

使用方法

各模型均可独立的预处理数据、训练、预测,下面以其中seq2seq_attention为例:

seq2seq_attention 模型使用示例:

配置

通过修改config.py

数据预处理

  1. cd seq2seq_attention
  2. # 数据预处理
  3. python preprocess.py

自动新建文件夹output,在output下生成train.txttest.txt文件,以TAB("\t")间隔错误文本和纠正文本,文本以空格切分词,文件内容示例:

  1. 希 望 少 吸 烟 。 希 望 烟 民 们 少 吸 烟 。
  2. 以 前 , 包 括 中 国 , 我 国 也 是 。 以 前 , 不 仅 中 国 , 我 国 也 是 。
  3. 我 现 在 好 得 多 了 。 我 现 在 好 多 了 。

训练

python train.py

训练过程截图: 

预测

python infer.py

预测输出效果样例:

  1. input: 少先队员因该给老人让坐 output: 少先队员因该给老人让座
  2. input: 少先队员应该给老人让坐 output: 少先队员应该给老人让座
  3. input: 没有解决这个问题, output: 没有解决这个问题,,
  4. input: 由我起开始做。 output: 由我起开始做
  5. input: 由我起开始做 output: 由我开始做

PS:

  1. 如果训练数据太少(不足万条),深度模型拟合不足,会出现预测结果全为<unk>的情况,解决方法:增大训练样本集,使用下方提供的纠错熟语料(nlpcc2018+hsk,130万对句子)测试。
  2. 深度模型训练耗时长,有GPU尽量用GPU,加速训练,节省时间。

自定义语言模型

语言模型对于纠错步骤至关重要,当前默认使用的是从千兆中文文本训练的中文语言模型zh_giga.no_cna_cmn.prune01244.klm(2.8G)。

大家可以用中文维基(繁体转简体,pycorrector.utils.text_utils下有此功能)等语料数据训练通用的语言模型,或者也可以用专业领域语料训练更专用的语言模型。更适用的语言模型,对于纠错效果会有比较好的提升。

  1. kenlm语言模型训练工具的使用,请见博客:http://blog.csdn.net/mingzai624/article/details/79560063
  2. 附上训练语料<人民日报2014版熟语料>,包括: 1)标准人工切词及词性数据people2014.tar.gz, 2)未切词文本数据people2014_words.txt, 3)kenlm训练字粒度语言模型文件及其二进制文件people2014corpus_chars.arps/klm, 4)kenlm词粒度语言模型文件及其二进制文件people2014corpus_words.arps/klm。

人民日报2014版熟语料,网盘链接:https://pan.baidu.com/s/1971a5XLQsIpL0zL0zxuK2A 密码:uc11。尊重版权,传播请注明出处。

中文纠错数据集

  1. NLPCC 2018 GEC官方数据集NLPCC2018-GEC, 训练集trainingdata[解压后114.5MB],该数据格式是原始文本,未做切词处理。
  2. 汉语水平考试(HSK)和lang8原始平行语料HSK+Lang8[190MB],该数据集已经切词,可用作数据扩增
  3. 以上语料,再加上CGED16、CGED17、CGED18的数据,经过以字切分,繁体转简体,打乱数据顺序的预处理后,生成用于纠错的熟语料(nlpcc2018+hsk),网盘链接:https://pan.baidu.com/s/1BkDru60nQXaDVLRSr7ktfA密码:m6fg [130万对句子,215MB]

贡献及优化点

  • [x] 优化形似字字典,提高形似字纠错准确率
  • [x] 整理中文纠错训练数据,使用seq2seq做深度中文纠错模型
  • [x] 添加中文语法错误检测及纠正能力
  • [x] 规则方法添加用户自定义纠错集,并将其纠错优先度调为最高
  • [x] seq2seq_attention 添加dropout,减少过拟合
  • [x] 在seq2seq模型框架上,新增Pointer-generator network、Beam search、Unknown words replacement、Coverage mechanism等特性
  • [x] 更新bert的fine-tuned使用wiki,适配transformers 2.10.0库
  • [x] 升级代码,兼容TensorFlow 2.0库
  • [x] 升级bert纠错逻辑,提升基于mask的纠错效果
  • [x] 新增基于electra模型的纠错逻辑,参数更小,预测更快

讨论群

微信交流群,感兴趣的同学可以加入沟通NLP文本纠错相关技术,issues上回复不及时也可以在群里面提问。

PS: 由于微信群满100人了,扫码加不了。扫我微信二维码,或者搜索我微信号:xuming624, 备注:个人名称-NLP纠错 进群。

 

 

引用

如果你在研究中使用了pycorrector,请按如下格式引用:

  1. @software{pycorrector,
  2. author = {Xu Ming},
  3. title = {{pycorrector: Text Correction Tool}},
  4. year = {2020},
  5. url = {https://github.com/shibing624/pycorrector},
  6. }

License

pycorrector 的授权协议为 Apache License 2.0,可免费用做商业用途。请在产品说明中附加pycorrector的链接和授权协议。pycorrector受版权法保护,侵权必究。

References

  • 基于文法模型的中文纠错系统
  • Norvig’s spelling corrector
  • Chinese Spelling Error Detection and Correction Based on Language Model, Pronunciation, and Shape[Yu, 2013]
  • Chinese Spelling Checker Based on Statistical Machine Translation[Chiu, 2013]
  • Chinese Word Spelling Correction Based on Rule Induction[yeh, 2014]
  • Neural Language Correction with Character-Based Attention[Ziang Xie, 2016]
  • Chinese Spelling Check System Based on Tri-gram Model[Qiang Huang, 2014]
  • Neural Abstractive Text Summarization with Sequence-to-Sequence Models[Tian Shi, 2018]
  • 基于深度学习的中文文本自动校对研究与实现[杨宗霖, 2019]
  • A Sequence to Sequence Learning for Chinese Grammatical Error Correction[Hongkai Ren, 2018]
  • ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators

pycorrector

Chinese text error correction tool.

pycorrector Use the language model to detect errors, pinyin feature and shape feature to correct chinese text error, it can be used for Chinese Pinyin and stroke input method.

Features

language model

  • Kenlm
  • RNNLM

Usage

install

  • pip install pycorrector / pip install pycorrector
  • Or download https://github.com/shibing624/pycorrector, Unzip and run: python setup.py install

correct

input:

  1. import pycorrector
  2. corrected_sent, detail = pycorrector.correct('少先队员因该为老人让坐')
  3. print(corrected_sent, detail)

output:

少先队员应该为老人让座 [[('因该', '应该', 4, 6)], [('坐', '座', 10, 11)]]

Future work

  1. P(c), the language model. We could create a better language model by collecting more data, and perhaps by using a little English morphology (such as adding "ility" or "able" to the end of a word).

  2. P(w|c), the error model. So far, the error model has been trivial: the smaller the edit distance, the smaller the error. Clearly we could use a better model of the cost of edits. get a corpus of spelling errors, and count how likely it is to make each insertion, deletion, or alteration, given the surrounding characters.

  3. It turns out that in many cases it is difficult to make a decision based only on a single word. This is most obvious when there is a word that appears in the dictionary, but the test set says it should be corrected to another word anyway: correction('where') => 'where' (123); expected 'were' (452) We can't possibly know that correction('where') should be 'were' in at least one case, but should remain 'where' in other cases. But if the query had been correction('They where going') then it seems likely that "where" should be corrected to "were".

  4. Finally, we could improve the implementation by making it much faster, without changing the results. We could re-implement in a compiled language rather than an interpreted one. We could cache the results of computations so that we don't have to repeat them multiple times. One word of advice: before attempting any speed optimizations, profile carefully to see where the time is actually going.

Further Reading

  • Roger Mitton has a survey article on spell checking.

References

  • Norvig’s spelling corrector
  • Norvig’s spelling corrector(java version)
pycorrector 纠错工具安装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FedNLP: 首个联邦学习赋能NLP的开源框架,NLP迈向分布式新时代

文 | 阿毅两周前&#xff0c;南加大Yuchen Lin&#xff08;PhD student USC and ex-research intern GoogleAI)所在的团队在Twitter官宣开源首个以研究为导向的联邦学习赋能NLP的FedNLP框架。发布数小时内就获得了647个赞&#xff0c;163次转发&#xff0c;可见其热度。我相信大…

LeetCode 380. 常数时间插入、删除和获取随机元素(哈希+vector)

1. 题目 设计一个支持在平均 时间复杂度 O(1) 下&#xff0c;执行以下操作的数据结构。 insert(val)&#xff1a;当元素 val 不存在时&#xff0c;向集合中插入该项。 remove(val)&#xff1a;元素 val 存在时&#xff0c;从集合中移除该项。 getRandom&#xff1a;随机返回现…

论文浅尝 - ICLR2020 | 知识图谱中数值规则的可微学习

论文笔记整理&#xff1a;许泽众&#xff0c;浙江大学博士研究生。研究方向&#xff1a;知识图谱&#xff0c;规则挖掘等。论文链接&#xff1a;https://openreview.net/pdf?idrJleKgrKwS本文解决的是规则的学习问题&#xff0c;学习出来的规则可用于知识推理任务&#xff0c;…

2021大厂面试高频100题最新汇总(附答案详解)

昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力&#xff1f;其中一个最热门的回答是&#xff1a;“其实&#xff0c;无论你是前端还是后端、想进大厂还是拿高薪&#xff0c;算法都一定很重要。”为什么&#xff0c;算法会如此重要&#xff1f;不…

LeetCode 33. 搜索旋转排序数组(二分查找)

1. 题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如&#xff0c;数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值&#xff0c;如果数组中存在这个目标值&#xff0c;则返回它的索引&#xff0c;否则返回 -1 。 你可以假设数…

论文浅尝 - EMNLP2020 | 低资源跨语言实体链接中的设计挑战

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;EMNLP 2020链接&#xff1a;https://arxiv.org/pdf/2005.00692.pdf1.背景介绍跨语言实体链接&#xff08;XEL&#xff09;旨在将任一非英语文本中的实体提及匹配到英语知识库上&#xff08;例如Wikip…

MSON,让JSON序列化更快

问题 我们经常需要在主线程中读取一些配置文件或者缓存数据&#xff0c;最常用的结构化存储数据的方式就是将对象序列化为JSON字符串保存起来&#xff0c;这种方式特别简单而且可以和SharedPrefrence配合使用&#xff0c;因此应用广泛。但是目前用到的Gson在序列化JSON时很慢&a…

屠榜各大CV任务!「百度顶会论文复现营」携Swin Transformer来袭!

目标检测刷到58.7 AP&#xff01;实例分割刷到51.1 Mask AP&#xff01;&#xff01;语义分割在ADE20K上刷到53.5 mIoU&#xff01;&#xff01;&#xff01;......Swin Transformer持续屠榜各大CV任务&#xff0c;并且均名列前茅&#xff01;通过分层体系结构&#xff0c;带来…

紧耦合(Tight Coupling)和松耦合(Loose Coupling)

在软件开发中&#xff0c;耦合&#xff08;Coupling&#xff09;是指模块或组件之间的依赖关系程度。紧耦合&#xff08;Tight Coupling&#xff09;和松耦合&#xff08;Loose Coupling&#xff09;是描述模块或组件之间耦合程度的两个概念。 紧耦合&#xff08;Tight Couplin…

百度任务型对话系统小记

意图扩展阅读&#xff1a; 古月哲亭: AAAI 2021 | 清华提出深度对齐聚类用于新意图发现&#xff1a;https://mp.weixin.qq.com/s/9dNs8TTERPdxmrVc3tF1zw 相关项目地址&#xff1a;https://github.com/thuiar/OKD-Reading-List 古月哲亭: 意图知识图谱的构建与应用&#xff1a…

论文浅尝 - EMNLP2020 | 跨媒体关键词预测: 多模态多头注意力和图像文本的统一框架...

论文笔记整理&#xff1a;柏超宇&#xff0c;东南大学硕士。文章链接&#xff1a;https://arxiv.org/pdf/2011.01565.pdf来源&#xff1a;EMNLP 2020动机社交媒体每天都会产生大量的内容。为了帮助用户快速捕捉所需内容&#xff0c;关键词预测受到越来越多的关注。尽管如此&…

从实际案例聊聊Java应用的GC优化

当Java程序性能达不到既定目标&#xff0c;且其他优化手段都已经穷尽时&#xff0c;通常需要调整垃圾回收器来进一步提高性能&#xff0c;称为GC优化。但GC算法复杂&#xff0c;影响GC性能的参数众多&#xff0c;且参数调整又依赖于应用各自的特点&#xff0c;这些因素很大程度…

LeetCode 162. 寻找峰值(二分查找)

1. 题目 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums&#xff0c;其中 nums[i] ≠ nums[i1]&#xff0c;找到峰值元素并返回其索引。 数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个峰值所在位置即可。 你可以假设 nums[-1] n…

谷歌:CNN击败Transformer,有望成为预训练界新霸主!LeCun却沉默了...

文 | ????????????????这几年&#xff0c;大家都说深度学习进入了预训练时代。作为一个入行不久的小白&#xff0c;我一直以为各类基于 Transformers 结构的预训练模型是 NLP 的巨大里程碑&#xff0c;CNN、RNN 老矣&#xff0c;只配作为手下败将。大家的文章似…

新词发现简介

原文链接&#xff1a;https://blog.csdn.net/weixin_43378396/article/details/103848628 新词发现是 NLP 的基础任务之一&#xff0c;通过对已有语料进行挖掘&#xff0c;从中识别出新词。新词发现也可称为未登录词识别&#xff0c;严格来讲&#xff0c;新词是指随时代发展而新…

论文浅尝 - AAAI2020 | 利用自然语言推断生成人称一致的对话

链接&#xff1a; https://arxiv.org/pdf/1911.05889.pdf动机虽然最近几年通过利用社交网络上大量人人交互数据训练开放域对话模型取得了很大的成功&#xff0c;但是这些数据驱动的对话系统仍然无法很自然的与人类对话&#xff0c;其中的一个主要问题就是对话系统缺乏一致的角色…

智能投放系统之场景分析最佳实践

美团点评作为业内最大的O2O的平台&#xff0c;以短信/push作为运营手段触达用户的量级巨大&#xff0c;每日数以千万计。 美团点评线上存在超过千万的POI&#xff0c;覆盖超过2000城市、2.5万个后台商圈。在海量数据存在的前提下&#xff0c;实时投放的用户在场景的选择上存在一…

7个提升PyTorch性能的技巧

文 | William Falcon源 | AI公园在过去的10个月里&#xff0c;在PyTorch Lightning工作期间&#xff0c;团队和我已经接触过许多结构PyTorch代码的风格&#xff0c;我们已经发现了一些人们无意中引入瓶颈的关键地方。我们非常小心地确保PyTorch Lightning不会对我们为你自动编写…

论文浅尝 - EMNLP2020 | 基于规则引导的协作 agent 知识图谱推理学习

论文笔记整理&#xff1a;叶橄强&#xff0c;浙江大学在读硕士&#xff0c;研究方向为知识图谱的表示学习和预训练。来源&#xff1a;EMNLP 2020现有的大多数基于行走的模型通过在提供可解释的决策的同时获得良好的性能&#xff0c;在知识图谱推理中显示出其优势。但在遍历过程…