NER -- 词向量与标注预处理阶段

0、前言

本文旨在对自己命名实体识别中词向量与标注预处理阶段的总结。此处假设给定大量文本,以及部分对应的标注(此处使用的是IOB标注方案),但是文本与标注是分开存储的。

在我们进行NER的预测任务之前,我们需要做以下工作:
(1)对每个文本进行分词(当然这里分词也要注意用什么标准进行分词,此处不解释),然后用空格(join)连接每个词,同时对部分文本进行打标注,分开存储成两个文件。
(2)对分好词的文本进行(split)汇总得到总语料,把语料放进去定义好的word2vec模型(调参min_count和size)里面进行训练,得到每个词对应的词向量。
(3)对每篇分词好的文本进行截断处理,然后做词向量拼接。所谓拼接,依据每个词对应的词向量按照顺序依次拼接起来,如果不足句子长度,则padding补0。补0的长度注意要对应上word2vec自定义的词向量长度m,并且少n个词就要补n*m个0。
(4)对标注文件进行截断得到标注列表,列表长度与截断后的文本长度一致。当然可能存在长度不足的情况,直接补0到长度一致即可。然后用LabelEncoder对标注列表进行onehot(提示:先对所有的标注列表展平,转为array再onehot,onehot好之后再reshape回去)。

1、代码如下

将标注的文件夹和存放文本的文件夹进行数据合并,文本合并到一起,标注合并到一起

#source_folder与target_folder分别文本文件夹和标注文件夹
import os
def get_train_list(source_folder, target_folder):
    source_string = []
    target_string = []
    for filename in os.listdir(source_folder):
        target_file_name = "targetH_" + "_".join(filename.split("_")[1:])
        if os.path.exists(os.path.join(target_folder, target_file_name)):
            with open(os.path.join(source_folder, filename), 'r', encoding="utf-8") as source:
                with open(os.path.join(target_folder, target_file_name), 'r', encoding="utf-8") as target:
                    for source_line, target_line in zip
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值