|
|
--- |
|
|
language: |
|
|
- zh |
|
|
- en |
|
|
license: apache-2.0 |
|
|
library_name: transformers |
|
|
pipeline_tag: text-classification |
|
|
tags: |
|
|
- text-classification |
|
|
- multi-label |
|
|
- patent-analysis |
|
|
- intellectual-property |
|
|
- qwen |
|
|
- qwen3-0.6b |
|
|
- transformers |
|
|
- pytorch |
|
|
- zero-shot-classification |
|
|
base_model: Qwen/Qwen3-0.6B |
|
|
datasets: |
|
|
- patent-parquet |
|
|
--- |
|
|
# PatentAI-Classifier |
|
|
|
|
|
**点击下方按钮查看在线演示**<br> |
|
|
[](https://huggingface.co/spaces/yushize/patent-classifier-demo) |
|
|
|
|
|
一个高效的多标签专利分类模型,专门用于从专利摘要中检测AI相关技术领域。 |
|
|
|
|
|
## 模型描述 |
|
|
PatentAI-Classifier是基于Qwen3-0.6B架构构建的专业专利分类模型,专门针对专利文本进行优化。该模型能够准确识别专利是否涉及人工智能技术,并进一步分类到8个AI子领域。 |
|
|
|
|
|
### 8个AI子领域 |
|
|
1.知识处理:知识处理领域包括用于表示世界事实并从知识库中推导出新事实(或知识)的方法。例如,专家系统通常包含一个知识库和一种推理方法来从该知识库中获得新事实。<br> |
|
|
2.语音识别:语音识别包括从音频信号中理解词语序列的方法。例如,噪声通道模型是一种统计方法,通过贝叶斯规则从语音输入中识别最可能的词语序列。<br> |
|
|
3.AI硬件:AI硬件领域包括专为执行人工智能软件而设计的物理硬件。例如,谷歌设计的张量处理单元(TPU)就是为了更高效地运行神经网络算法。AI硬件可能包括逻辑电路、存储器、视频、处理器和固态技术,也可能包括实现其他AI组成技术(如机器学习算法)的嵌入式软件。<br> |
|
|
4.进化计算:进化计算是一类利用自然演化特性的计算方法。例如,遗传算法通过选择最优的随机变异体以最大化适应度来执行算法变异选择。<br> |
|
|
5.自然语言处理:自然语言处理包括用于理解和使用以人类自然语言编码的数据的方法。例如,语言模型用于表示语言表达的概率分布。<br> |
|
|
6.机器学习:机器学习领域包含一类广泛的计算学习模型。例如,监督学习分类模型是一种基于预标记训练数据学习进行分类的算法。机器学习技术包括但不限于神经网络、模糊逻辑、自适应系统、概率网络、回归分析以及智能搜索。<br> |
|
|
7.计算机视觉:计算机视觉领域包括从图像和视频等视觉输入中提取和理解信息的方法。例如,边缘检测技术可识别图像中的边界和轮廓。其他计算机视觉子领域还包括目标识别、图像处理(如变换、增强或还原)、颜色处理和格式转换等。<br> |
|
|
8.规划与控制:规划与控制领域包括识别并执行实现特定目标的计划的方法。规划的关键方面包括表示行动和世界状态、推理行动的后果,并在潜在计划中高效地搜索。现代控制理论包括在时间维度上最大化目标函数的方法。例如,随机最优控制处理在不确定环境中的动态优化问题。此外,规划与控制还涵盖用于管理/行政的数据系统(例如:组织和员工的管理,包括库存、工作流程、预测和时间管理)、自适应控制系统,以及系统模型或模拟器。<br> |
|
|
**模型特点:** |
|
|
|
|
|
🚀 高效推理: 针对大批量数据处理优化,适合处理海量专利数据<br> |
|
|
🎯 多标签分类: 同时检测多个AI技术标签<br> |
|
|
📊 阈值优化: 为每个类别单独优化预测阈值,最大化F1分数<br> |
|
|
🔧 约束保证: 内置业务逻辑约束(非AI专利不能预测AI子类) |
|
|
## 使用用途 |
|
|
该模型主要用于: |
|
|
|
|
|
大规模专利数据自动化分类处理<br> |
|
|
AI技术趋势分析和专利挖掘<br> |
|
|
知识产权管理和技术监控<br> |
|
|
研究机构和技术公司的专利分析<br> |
|
|
## 如何使用 |
|
|
|
|
|
### 基本使用 |
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModel |
|
|
import torch |
|
|
import pandas as pd |
|
|
|
|
|
# 加载模型和分词器 |
|
|
model_name = "yushize/patent_classifier" |
|
|
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) |
|
|
model = AutoModel.from_pretrained(model_name, trust_remote_code=True) |
|
|
|
|
|
# 准备数据 |
|
|
def predict_patent_abstracts(abstracts): |
|
|
"""预测专利摘要""" |
|
|
# 分词处理 |
|
|
inputs = tokenizer( |
|
|
abstracts, |
|
|
max_length=256, |
|
|
padding=True, |
|
|
truncation=True, |
|
|
return_tensors="pt" |
|
|
) |
|
|
|
|
|
# 模型预测 |
|
|
with torch.no_grad(): |
|
|
outputs = model(**inputs) |
|
|
probs = torch.sigmoid(outputs) |
|
|
|
|
|
# 应用优化阈值和约束 |
|
|
preds = apply_optimized_thresholds(probs.numpy()) |
|
|
return preds |
|
|
|
|
|
# 处理parquet文件 |
|
|
def process_parquet_file(parquet_path): |
|
|
"""处理parquet文件中的专利摘要""" |
|
|
df = pd.read_parquet(parquet_path) |
|
|
abstracts = df["摘要文本"].tolist() |
|
|
|
|
|
# 批量预测 |
|
|
batch_size = 128 |
|
|
all_predictions = [] |
|
|
|
|
|
for i in range(0, len(abstracts), batch_size): |
|
|
batch_abstracts = abstracts[i:i+batch_size] |
|
|
predictions = predict_patent_abstracts(batch_abstracts) |
|
|
all_predictions.extend(predictions) |
|
|
|
|
|
return all_predictions |
|
|
``` |
|
|
## 批量处理示例 |
|
|
```python |
|
|
import pyarrow.parquet as pq |
|
|
import numpy as np |
|
|
|
|
|
# 加载优化阈值 |
|
|
with open("optimal_thresholds.json", "r") as f: |
|
|
optimal_thresholds = json.load(f) |
|
|
|
|
|
def apply_optimized_thresholds(probs, thresholds=optimal_thresholds): |
|
|
"""应用优化阈值进行预测""" |
|
|
preds = np.zeros_like(probs) |
|
|
for i, threshold in thresholds.items(): |
|
|
preds[:, i] = (probs[:, i] > threshold).astype(float) |
|
|
|
|
|
# 应用约束:非AI专利不能预测AI子类 |
|
|
non_ai_mask = (preds[:, 0] == 1) |
|
|
preds[non_ai_mask, 1:] = 0 |
|
|
|
|
|
return preds |
|
|
|
|
|
# 处理大规模数据 |
|
|
def process_large_dataset(parquet_path, output_path): |
|
|
"""处理大规模专利数据集""" |
|
|
# 使用pyarrow进行流式处理 |
|
|
table = pq.read_table(parquet_path) |
|
|
abstracts = table["摘要文本"].to_pylist() |
|
|
|
|
|
results = [] |
|
|
for i, abstract in enumerate(abstracts): |
|
|
if i % 10000 == 0: |
|
|
print(f"已处理 {i} 条数据") |
|
|
|
|
|
prediction = predict_patent_abstracts([abstract])[0] |
|
|
# 转换为标签数组格式 [0] 或 [1,2] 或 [5] |
|
|
labels = [idx for idx, pred in enumerate(prediction) if pred > 0.5] |
|
|
results.append(labels) |
|
|
|
|
|
# 保存结果 |
|
|
output_df = pd.DataFrame({ |
|
|
"abstract": abstracts, |
|
|
"predictions": results |
|
|
}) |
|
|
output_df.to_parquet(output_path) |
|
|
``` |
|
|
## 输入输出格式 |
|
|
|
|
|
**输入** |
|
|
格式: Parquet文件<br> |
|
|
数据列: 必须包含"摘要文本"列<br> |
|
|
示例:<br> |
|
|
```python |
|
|
# parquet文件结构 |
|
|
df = pd.DataFrame({ |
|
|
"摘要文本": ["这是一个专利摘要文本...", "另一个专利摘要..."] |
|
|
}) |
|
|
``` |
|
|
**输出** |
|
|
格式: PyArrow数组<br> |
|
|
内容: 多标签分类结果,格式为整数数组<br> |
|
|
示例:<br> |
|
|
[0] → 非AI专利<br> |
|
|
[1,2] → 涉及第1和第2类AI技术<br> |
|
|
[5] → 仅涉及第5类AI技术<br> |
|
|
## 模型性能 |
|
|
在测试集上的表现: |
|
|
|
|
|
Macro F1: 0.75<br> |
|
|
Micro F1: 0.88<br> |
|
|
准确率: 0.85<br> |
|
|
推理速度: ~12条/秒 (GTX 1080 Ti)<br> |
|
|
## 训练信息 |
|
|
基础模型: Qwen/Qwen3-0.6B<br> |
|
|
训练数据: ~14000 专利摘要<br> |
|
|
类别数: 9 (1个非AI + 8个AI子类)<br> |
|
|
训练时间: 8小时 (1×GTX 1080 Ti)<br> |
|
|
## 注意事项 |
|
|
确保输入文本为专利摘要内容<br> |
|
|
模型针对中文专利文本优化<br> |
|
|
建议使用GPU进行批量推理以获得最佳性能<br> |
|
|
## 作者 |
|
|
[余世泽/xulab] |
|
|
|
|
|
## 引用 |
|
|
如果您使用了本模型,请引用: |
|
|
|
|
|
bibtex |
|
|
复制 |
|
|
@software{patentai_classifier_2025, |
|
|
title = {Patent-Classifier: Efficient Patent Classification Model}, |
|
|
author = {您的姓名}, |
|
|
year = {2025}, |
|
|
url = {https://huggingface.co/yushize/patent-classifier} |
|
|
} |
|
|
|