python|torchcrf from torchcrf import CRF
安装 torchcrf:pip install pytorch-crf -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip list 显示的时候是 TorchCRF 然而导入的时候是用 import torchcrf 或者 from torchcrf import CRF
文章图片
import torch
# 安装 torchcrfpip install pytorch-crf -i https://pypi.tuna.tsinghua.edu.cn/simple/
# pip list 显示的时候是 TorchCRF 然而导入的时候是用 import torchcrf 或者 from torchcrf import CRF
from torchcrf import CRF
num_tags = 5# 实体命名识别 每个汉字可以预测多少中类型
# model = CRF(num_tags,batch_first=True)
model = CRF(num_tags)
seq_length = 3# 句子长度(一个句子有三个单词)
batch_size = 1# batch大小 一共输入几个句子 在这里是一个 句子
hidden= torch.randn(batch_size,seq_length,num_tags) # 输入的是 batch:几个句子 ,seq_length:每个句子的长度
print(hidden.shape)# torch.Size([1, 3, 5])
# 表示:一个句子 句子长度是3 每个单词的维度是 5 ,为什么是5呢?因为是为每个单词打标签,一共有五个标签 所以
print(hidden)
mask = torch.tensor([[1,1,0]], dtype=torch.uint8) # mask的意思是 有的汉字的向量 不进行标签的预测
# mask的形状是:[batch,seq_length]
# 这句话由于torchcrf版本不同 进而 函数设置不同 batch_first=True 假设没有这句话那么输入模型的第一个句子序列的 mask都是true,假设有这句话 就没事 ,mask是正常的
# mask的作用是:因为是中文的句子 那么每句话都要padding 一定的长度 所以 告诉模型那些是padding的
tags = torch.tensor([[0,2,3]], dtype=torch.long)#(batch_size, seq_length)
# tags 是真实的每个单词的标签在crf模型中用不到啊
loss=model(hidden,tags,mask)# 计算对数似然(用于向前) loss
print(loss)
a=model.viterbi_decode(hidden,mask)# 或者用 model.decode(hidden,mask)
print(a)
【python|torchcrf from torchcrf import CRF】
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 使用协程爬取网页,计算网页数据大小
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)