Pytorch 自学笔记(自用)

第三章nlp自学系列笔记

文章目录

  • 第三章nlp自学系列笔记
  • 文本预处理基础方法
  • 一、jieba的使用
  • 二、中英文分词工具hanlp
  • 三.命名实体识别(NER)
    • 1.使用hanlp进行命名实体识别
    • 使用jieba进行中文词性标注
  • 四.文本张量的表示方法
    • 4.1 one-hot编码
    • 4.2 使用fasttext工具实现word2vec
      • 1.训练词向量
      • 2.模型超参数设定
      • 3.模型效果检验
      • 4.模型保存与重加载
    • 4.3 word Embedding编码
  • 总结


文本预处理基础方法

一、jieba的使用

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

全模式分词:jieba.cut(content,cut_all=False)
以列表的形式返回:jieba.lcut()
搜索引擎式分词:在精确模式的基础上,对长词再次切分,提高召回率。jieba.cut_for_search(content)
使用用户自动以词典,词典格式:词语+词频(可省略)+词性(可省略),用空格隔开。jieba.load_userdict(" “)

二、中英文分词工具hanlp

import  hanlp

tokenizer=hanlp.load('CTB6_CONVSEG')
tokenizer("内容")

tokenizer=hanlp.utils.rules.tokenize_english#分割英文
tokenizer('英文内容')

三.命名实体识别(NER)

1.使用hanlp进行命名实体识别

import  hanlp

recognizer=hanlp.load(hanlp.pretrained.ner.MSRA_NER_ALBERT_BASE_ZH)#中文
list('今天的月亮又大又圆')

recognizer=hanlp.load(hanlp.pretrained.ner.CONLL03_NER_BERT_BASE_UNCASED_EN)#英文

使用jieba进行中文词性标注

import jieba.posseg as pseg
pseg.lcut("我爱天安门")

四.文本张量的表示方法

文本用张量(矩阵)表示,一般词汇表示成向量,称为词向量,再有各个词向量按顺序组成矩阵形成文本表示

文本张量表示方法:
one-hot
word2vec
word Embedding

4.1 one-hot编码

n个元素表示的词向量,只有一个元素是1,其他元素都是0,n的大小是整个预料中不同词汇的总数

from sklearn.externals import joblib
from keras.preprocessing.text import Tokenizer

vocab={"周x","陈xx","王xx"}#假定vocab为语料集所有不同词汇集合
t=Tokenizer(num_words=None,char_level=False)#实例化一个词汇映射器对象
t.fit_on_texts(vocab)#使用映射器拟合现有文本数据

for token in vocab:
    zero_list=[0]*len(vocab)
    #使用映射器转化现有文本数据,每个词汇对应从1开始的自然数
    #返回样式如:[[2]]。取出其中的数字需要使用【0】【0】
    token_index=t.texts_to_sequences([token])[0][0]-1
    zero_list[token_index]=1
    print(token,"的one-hot编码为:",zero_list)

#使用 joblib工具保存映射器,一遍之后使用
tokenizers_path="./Tokenizer"
joblib.dump(t,tokenizers_path)#映射器
t=joblib.load(tokenizers_path)#实例化一个对象


token="陈xx"
token_index=t.texts_to_sequences([token])[0][0]-1#从0的位置开始取 
zero_list=[0]*len(vocab)
#令zero_list的对应索引为1
zero_list[token_index]=1
print(token,'的one-hot编码为:',zero_list)

4.2 使用fasttext工具实现word2vec

无监督训练方法 包含两种训练模式 CBOW 和 skipgram

1.训练词向量

import fasttext
model = fasttext.train_supervised('D:\Albertset\dataset\professional.csv')
#通过get_word_vector方法来获得指定词汇的词向量
model.get_word_vector("的")
model.fasttext.train_unsupervised('D:\Albertset\dataset\professional.csv',"cbow",dim=300,epoch=1,lr=0.05,thread=12)

Pytorch 自学笔记(自用)_第1张图片

2.模型超参数设定

1.实践中,skippgram模式再利用子词方面比cbow好
2.词嵌入维度dim:默认100,
3.循环次数epoch:默认5,如果数据集足够大,就不需要那么多次
4.学习率lr:默认0.05
5.线程数thread:默认12个县城,建议和cpu核数相同

3.模型效果检验

查找邻近单词,判断与目标单词的相关性

model.get_nearest_neighbors('sports')
model.get_nearest_neighbors('music')

4.模型保存与重加载

#模型保存与重加载
model.save_model("word2vec.bin")

4.3 word Embedding编码

  • 通过一定的方式将词汇映射到指定维度(一般是更高维)
  • 广义的word Embedding包括所有密集词汇向量的表示方法,如word2vec
  • 狭义的word Embedding值在神经网络中加入embedding层,embedding矩阵就是所有输入词汇向量表示组成的矩阵

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(python,ner,nlp,python,nlp,神经网络)