许可证:无许可证
语言:
- 俄语
标签:
- PyTorch
- 电子商务
- transformers.js
任务类型:填充掩码
小部件示例:
- 文本:电子设备 充电器 [MASK] USB
库名称:transformers
该模型用于解决搜索查询中缺失词语的问题。模型利用查询的上下文生成可能缺失的词语。
from transformers import pipeline
unmasker = pipeline("fill-mask", model="fkrasnov2/COLD2", device="cuda")
unmasker("电子设备 充电器 [MASK] USB")
[{'score': 0.3712620437145233,
'token': 1131,
'token_str': '车载',
'sequence': '电子设备 充电器 车载 usb'},
{'score': 0.12239563465118408,
'token': 7436,
'token_str': '快速',
'sequence': '电子设备 充电器 快速 usb'},
{'score': 0.046715956181287766,
'token': 5819,
'token_str': '有线',
'sequence': '电子设备 充电器 有线 usb'},
{'score': 0.031308457255363464,
'token': 635,
'token_str': '通用',
'sequence': '电子设备 充电器 通用 usb'},
{'score': 0.02941182069480419,
'token': 2371,
'token_str': '适配器',
'sequence': '电子设备 充电器 适配器 usb'}]
使用连词介词可以优化分词效果。
unmasker("服装 女士 [MASK] 节日专用")
[{'score': 0.9355553984642029,
'token': 503,
'token_str': '连衣裙',
'sequence': '服装 女士 连衣裙 节日专用'},
{'score': 0.011321154423058033,
'token': 615,
'token_str': '戒指',
'sequence': '服装 女士 戒指 节日专用'},
{'score': 0.008672593161463737,
'token': 993,
'token_str': '饰品',
'sequence': '服装 女士 饰品 节日专用'},
{'score': 0.0038903721142560244,
'token': 27100,
'token_str': '斗篷',
'sequence': '服装 女士 斗篷 节日专用'},
{'score': 0.003703165566548705,
'token': 453,
'token_str': '内衣',
'sequence': '服装 女士 内衣 节日专用'}]
对于transformers.js,需要使用模型的ONNX版本
from transformers import AutoTokenizer
from optimum.onnxruntime import ORTModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained("fkrasnov2/COLD2")
model = ORTModelForMaskedLM.from_pretrained("fkrasnov2/COLD2", file_name='model.onnx')
您也可以直接在浏览器中运行和使用该模型
index.html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>填充掩码</title>
<link rel="stylesheet" href="styles.css">
<script src="main.js" type="module" defer></script>
</head>
<body>
<div class="container">
<textarea id="long-text-input" placeholder="输入包含[MASK]的搜索查询"></textarea>
<button id="generate-button">
填充掩码
</button>
<div id="output-div"></div>
</div>
</body>
</html>
main.js
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.0.2';
const longTextInput = document.getElementById('long-text-input');
const output = document.getElementById('output-div');
const generateButton = document.getElementById('generate-button');
const pipe = await pipeline(
'fill-mask',
'fkrasnov2/COLD2'
);
generateButton.addEventListener('click', async () => {
const input = longTextInput.value;
const result = await pipe(input);
output.innerHTML = result[0].sequence;
output.style.display = 'block';
});
