🚀 俄罗斯商品与品牌命名实体识别器
这是一个用于从俄罗斯财政数据运营商的收据中提取商品和品牌的命名实体识别器。它能够有效识别收据中的商品和品牌信息,为收据的结构化处理提供有力支持。
🚀 快速开始
本模型专为一场特殊的多阶段收据结构化竞赛而开发。该竞赛由 Open Data Science社区 和 阿尔法银行 联合举办,包含 第一阶段、第二阶段 和 决赛阶段。不过,此模型可用于任何俄语收据的解析和结构化处理。用于微调与推理的代码仓库可在 gitflic.ru 上获取。
💻 使用示例
基础用法
from typing import Tuple
import torch
from transformers import T5ForConditionalGeneration, GPT2Tokenizer
MODEL_NAME = 'bond005/FRED-T5-large-ods-ner-2023'
START_TAG = '<LM>'
END_TAG = '</s>'
def initialize_recognizer(model_path: str) -> Tuple[GPT2Tokenizer, T5ForConditionalGeneration]:
model = T5ForConditionalGeneration.from_pretrained(model_path)
if not torch.cuda.is_available():
raise ValueError('CUDA is not available!')
model = model.cuda()
model.eval()
tokenizer = GPT2Tokenizer.from_pretrained(model_path)
return tokenizer, model
def recognize(text: str, tokenizer: GPT2Tokenizer, model: T5ForConditionalGeneration) -> Tuple[str, str]:
if text.startswith(START_TAG):
x = tokenizer(text, return_tensors='pt', padding=True).to(model.device)
else:
x = tokenizer(START_TAG + text, return_tensors='pt', padding=True).to(model.device)
out = model.generate(**x)
predictions = tokenizer.decode(out[0], skip_special_tokens=True).strip()
while predictions.endswith(END_TAG):
predictions = predictions[:-len(END_TAG)].strip()
prediction_pair = predictions.split(';')
if len(prediction_pair) == 0:
goods = ''
brands = ''
elif len(prediction_pair) == 1:
goods = prediction_pair[0].strip()
brands = ''
else:
goods = prediction_pair[0].strip()
brands = prediction_pair[1].strip()
return goods, brands
recognizer = initialize_recognizer(MODEL_NAME)
goods_and_brands = recognize(text='Водка "Русская валюта" премиум люкс 38% 0,25л, Россия',
tokenizer=recognizer[0], model=recognizer[1])
print(f'GOODS: {goods_and_brands[0]}')
print(f'BRANDS: {goods_and_brands[1]}')
📄 许可证
本项目采用 apache-2.0
许可证。