自然语言处理之词性标注(POS)

一、概念:

词性标注(Part-of-Speech tagging 或POS tagging),又称词类标注或者简称标注,是指为分词结果中的每个单词标注一个正确的词性的程序,也即确定每个词是名词、动词、形容词或其他词性的过程。词主要可以分为以下2类:

  • 实词:名词、动词、形容词、状态词、区别词、数词、量词、代词
  • 虚词:副词、介词、连词、助词、拟声词、叹词。

二、常用的词性标注集如下:

  1. 《PFR人民日报标注语料库》词性编码表——40多个标记
  2. 《现代汉语语料库加工规范——词语切分与词性标注》词性标记——40多个标记
  3. 计算所ICTCLAS3.0汉语词性标记集——共计99个标记,包括22个一类、66个2类、11个三类
  4. HanLP词性标记集——兼容上述2和3
  5. BosonNLP词性标注——共22个大类,70个标签
  6. 结巴分词中出现的类型
  7. StanfordNLP的词性标注(中文)
  8. StanfordNLP的词性标注(英文)

 

详见:https://www.biaodianfu.com/pos-tagging-set.html

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用RNN实现自然语言词性标注的示例代码,基于PyTorch框架: ```python import torch import torch.nn as nn import torch.optim as optim # 定义模型类 class RNN_POS(nn.Module): def __init__(self, vocab_size, embedding_dim, hidden_dim, output_size): super(RNN_POS, self).__init__() self.embedding = nn.Embedding(vocab_size, embedding_dim) self.rnn = nn.RNN(embedding_dim, hidden_dim, batch_first=True) self.fc = nn.Linear(hidden_dim, output_size) def forward(self, x): x = self.embedding(x) x, _ = self.rnn(x) x = self.fc(x) return x # 定义训练函数 def train(model, train_loader, optimizer, criterion): model.train() for batch_idx, (data, target) in enumerate(train_loader): optimizer.zero_grad() output = model(data) loss = criterion(output.view(-1, output.shape[-1]), target.view(-1)) loss.backward() optimizer.step() # 定义测试函数 def test(model, test_loader, criterion): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: output = model(data) test_loss += criterion(output.view(-1, output.shape[-1]), target.view(-1)).item() pred = output.argmax(dim=-1) correct += pred.eq(target).sum().item() test_loss /= len(test_loader.dataset) accuracy = 100. * correct / len(test_loader.dataset) print('Test set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)'.format( test_loss, correct, len(test_loader.dataset), accuracy)) # 定义超参数 vocab_size = 10000 embedding_dim = 128 hidden_dim = 64 output_size = 10 lr = 0.01 epochs = 10 batch_size = 64 # 加载数据集(这里使用PyTorch自带的Penn Treebank数据集) from torchtext.datasets import PennTreebank from torchtext.data.utils import get_tokenizer from torchtext.data.utils import ngrams_iterator from torchtext.vocab import build_vocab_from_iterator tokenizer = get_tokenizer('basic_english') train_iter = PennTreebank(split='train') train_text = [] for (text,) in train_iter: train_text += tokenizer(text) vocab = build_vocab_from_iterator(ngrams_iterator(train_text, 1, 2)) vocab.set_default_index(vocab["<unk>"]) train_iter, val_iter, test_iter = PennTreebank() train_loader = torch.utils.data.DataLoader(train_iter, batch_size=batch_size, shuffle=True) test_loader = torch.utils.data.DataLoader(test_iter, batch_size=batch_size, shuffle=True) # 初始化模型、优化器、损失函数 model = RNN_POS(vocab_size, embedding_dim, hidden_dim, output_size) optimizer = optim.Adam(model.parameters(), lr=lr) criterion = nn.CrossEntropyLoss() # 训练模型 for epoch in range(1, epochs+1): train(model, train_loader, optimizer, criterion) test(model, test_loader, criterion) ``` 这个示例代码使用Penn Treebank数据集进行训练和测试,输出结果包括测试集的平均损失和准确率。你可以将其修改为适用于其他数据集的代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值