ONNX 模型库
返回模型

说明文档

房型名称相似度模型

这是一个用于测量房型名称文本相似度的孪生网络(Siamese)模型。

模型概述

该模型用于测量住宿房型名称之间的相似度,以识别相同的物理房型。使用基于BERT的孪生网络,可以同时处理韩语和英语文本。

模型信息

  • 模型名称: name_similarity_model_0.2
  • 基础模型: klue/bert-base
  • 最大序列长度: 64
  • 词汇量: 32,000
  • 语言: 韩语, 英语

使用方法

使用Python调用模型

import torch
from transformers import AutoTokenizer, AutoModel
import json

# 加载模型信息
with open('name_similarity_model_0.2_model_info.json', 'r') as f:
    model_info = json.load(f)

with open('name_similarity_model_0.2_tokenizer_info.json', 'r') as f:
    tokenizer_info = json.load(f)

# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(tokenizer_info['model_name'])

# 加载模型
model = torch.load('name_similarity_model_0.2.pth', map_location='cpu')
model.eval()

# 使用ONNX模型 (更快的推理)
import onnxruntime as ort
onnx_session = ort.InferenceSession('name_similarity_model_0.2.onnx')

def calculate_similarity(text1, text2):
    # 文本分词
    inputs1 = tokenizer(text1, return_tensors='pt', max_length=64, padding=True, truncation=True)
    inputs2 = tokenizer(text2, return_tensors='pt', max_length=64, padding=True, truncation=True)
    
    # 计算相似度
    with torch.no_grad():
        similarity = model(inputs1, inputs2)
    
    return similarity.item()

# 示例用法
text1 = "스탠다드 더블룸"
text2 = "Standard Double Room"
similarity_score = calculate_similarity(text1, text2)
print(f"相似度: {similarity_score:.4f}")

使用ONNX模型 (推荐)

import onnxruntime as ort
import numpy as np
from transformers import AutoTokenizer

# 创建ONNX会话
session = ort.InferenceSession('name_similarity_model_0.2.onnx')

# 加载分词器
tokenizer = AutoTokenizer.from_pretrained('klue/bert-base')

def calculate_similarity_onnx(text1, text2):
    # 文本分词
    inputs1 = tokenizer(text1, return_tensors='np', max_length=64, padding=True, truncation=True)
    inputs2 = tokenizer(text2, return_tensors='np', max_length=64, padding=True, truncation=True)
    
    # ONNX模型推理
    input_feed = {
        'input_ids_1': inputs1['input_ids'].astype(np.int64),
        'attention_mask_1': inputs1['attention_mask'].astype(np.int64),
        'input_ids_2': inputs2['input_ids'].astype(np.int64),
        'attention_mask_2': inputs2['attention_mask'].astype(np.int64)
    }
    
    similarity = session.run(None, input_feed)[0]
    return similarity[0][0]

# 示例用法
similarity_score = calculate_similarity_onnx("스탠다드 더블룸", "Standard Double Room")
print(f"相似度: {similarity_score:.4f}")

模型文件

  • name_similarity_model_0.2.pth: PyTorch模型文件
  • name_similarity_model_0.2.onnx: ONNX模型文件 (推理优化)
  • name_similarity_model_0.2_model_info.json: 模型元数据
  • name_similarity_model_0.2_tokenizer_info.json: 分词器信息

性能

  • 准确率: 85%以上
  • F1分数: 0.85以上
  • 处理速度: 1000对/秒以上 (基于ONNX模型)

训练数据

该模型使用以下数据进行训练:

  • 正样本对: 具有相同roomtype_id的房型名称
  • 负样本对: 具有相同property_id但不同roomtype_id的房型名称

许可证

MIT License

参考

该模型是Room Clusterer项目的一部分开发的。更多信息请参阅项目仓库

ondame/room-name-similarity

作者 ondame

feature-extraction transformers
↓ 0 ♥ 0

创建时间: 2025-09-26 06:56:28+00:00

更新时间: 2025-11-18 03:49:36+00:00

在 Hugging Face 上查看

文件 (6)

.gitattributes
README.md
encoder.onnx ONNX
inference_example.py
model.pth
model_info.json