自然语言

June 25, 2022

transformers 在seq2seq 模型中的decoder_input_ids

decoder_input_ids 是来自 huggingface 的labels decoder_input_ids(可选)对应标签,labels是提供decoder_input_ids的首选方式。 这是因为如果 decoder_input_ids 为 None,它们将通过将labels向右移动来派生,因此您不必自己进行移动。 参考链接: Glossary What decoder_input_ids should be for...

Read More
March 20, 2022

keybert做中文文本关键词提取

keybert 使用向量计算抽取关键词,只需要预训练模型,不需要额外模型训练。 流程: 1.没有提供分词功能,英文是空格分词,中文输入需要分完词输入。 2.选择候选词:默认使用CountVectorizer进行候选词选择。 model:默认方式,候选词向量和句向量的距离排序。 mmr:最大边际距离方法,保证关键词之间的多样性。考虑词之间的相似性。 max_sum:候选词之间相似和最小的组合。 github:https://github.com/MaartenGr/KeyBERT guides:https://maartengr.github.io/KeyBERT/guides/quickstart.html 由于默认只支持SentenceTransformer模型导入,无法直接使用transformers作为后端,还好官方支持自定义方案导入。这里提供keybert引入huggingface transformers作为后端,可以方便处理中文 https://github.com/napoler/keybert_transformers_backend """ 示例 """...

Read More
March 12, 2022

文本分段算法TextTiling

Texttiling利用了词性共现、分布的模式。算法有三个部分:1. 将文章分成一个一个句子单元 2. 为每一个句子单元算一个分数 3. 根据句子单元之间的"against scores"所得到的图,来得到子话题的边界。 text=“I'm messing around with this one myself just now...

Read More
February 19, 2022

甲骨自然语言工具包

甲骨自然语言工具包 https://github.com/ownthink/Jiagu pip install -U jiagu Collecting jiagu Downloading jiagu-0.2.3.tar.gz (53.8 MB) [K |████████████████████████████████| 53.8 MB...

Read More
November 11, 2021

如何解决自然语言模型训练中数据不足?进行文本数据增强方法分享

句自然语言任务中数据标注的成本一般都比较高,所以获取高质量数据集便成了最大的难题. 虽然最近几年各种预训练模型大行其道,但是如果能够有足够好的数据集也是能够解决问题的关键。 Mask 如果使用bert作为模型一部分微调数据,mask方案没准是最廉价的创造数据的方法。之前看到有人说用mlm做内容替换生成训练,为什么不直接搞个动态mask呢?一切需要的全都有了。 基于词典的替换 这个无需多言了。借助word2vec这种词向量,实现起来也是相当简单,还有fasttext也不错。 回翻译 这个简单就是 中文>英文>日文>中文,这么折腾一通,自己都看不懂的数据集就产生了。 HuggingFace的MarianMT预训练模型可以拿来做增强数据,直接模型做翻译。 https://huggingface.co/transformers/model_doc/marian.html#marianmtmodel 支持的翻译语言模型 https://huggingface.co/Helsinki-NLP 滑窗 这个起初是为了应对模型处理内容不够长来的处理方案, 最简单的方案:...

Read More
November 6, 2021

解决 训练深度学习网络时候,出现Nan是什么原因,怎么才能避免?

训练深度学习的网络时候,迭代一定次数,会出现loss是nan,然后acc很快降低到了0.1,也就无法继续训练。 梯度爆炸 梯度变得非常大,使得学习过程难以继续 梯度爆炸,解决方法:调学习率、梯度剪裁、归一化 加入gradient clipping; 不当的损失函数 输入中就含有NaN。(这个才是最多的情况)♥ 计算loss的时候有log0,可能是初始化的问题,也可能是数据的问题. 设置batch_size = 1,shuffle = False,一步一步地将sample定位到了所有可能的脏数据,删掉。 简单暴力解决,引入动态噪点。,语言引入Bert的mask,可以提高泛化,又可以避免出现无法求导。

Read More