🚀 俄羅斯商品與品牌命名實體識別器
這是一個用於從俄羅斯財政數據運營商的收據中提取商品和品牌的命名實體識別器。它能夠有效識別收據中的商品和品牌信息,為收據的結構化處理提供有力支持。
🚀 快速開始
本模型專為一場特殊的多階段收據結構化競賽而開發。該競賽由 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
許可證。