语言:
- 意大利语
标签:
- 摘要生成
- 标签提取
- 意大利语
推理参数:
parameters:
do_sample: False
min_length: 0
示例:
- 文本: "1924年,作家弗吉尼亚·伍尔夫在随笔《班尼特先生与布朗太太》中探讨了小说构建与结构的主题,当时这一体裁因作家们无法塑造真实人物而被认为在衰落。伍尔夫描述了她从里士满到滑铁卢的火车旅途中,长时间观察坐在对面一位60多岁的女士——布朗太太的经历。她被这个能唤起无数可能故事、激发小说灵感的人物深深吸引:「所有小说都始于角落里的老妇人」。伍尔夫认为,像布朗太太这样的形象「会迫使某人几乎自动地开始创作小说」。在文中,伍尔夫分析了当时三位英国著名作家——H·G·威尔斯、约翰·高尔斯华绥和阿诺德·班尼特——的叙事技巧,试图理解为何19世纪的风格惯例已不适用于描述20年代的人类「性格」。《纽约客》一篇长篇评论文章中,长期担任《纽约时报》书评版块主编的文学评论家帕鲁尔·塞加尔尝试了类似伍尔夫的实验,思考当代作家会如何处理布朗太太这个角色。她推测,如今这个人物可能不会因其不完整性和神秘气质引发好奇与迷恋,而更可能传递一种模糊泛化的创伤印象。"
示例标题: "弗吉尼亚·伍尔夫"
- 文本: "巴黎圣母院内部修缮工程近期成为法国媒体热议焦点,这场始于2019年大火(烧毁尖顶和大部分屋顶)的修复工作,因几项内部改造提案引发保守派专家和评论家的批评与警觉。该项目虽已获得国家委员会初步批准,仍需经过各级技术官员和政界人士(直至马克龙总统)的多轮审议。但关于游客动线、照明系统、座椅布置及艺术品展陈的改造方案,已让一些批评者称之为「觉醒主义主题公园」和「政治正确的迪士尼乐园」。"
示例标题: "巴黎圣母院"
文本转标签模型
该模型基于28,000篇新闻文章及其标签训练而成,旨在为给定文章生成合适的标签。该模型也可用于信息检索(GenQ)任务,或通过微调sentence-transformers实现非对称语义搜索。
若您喜欢本项目,欢迎请我喝杯咖啡支持!🤖✨🌞

老彼得·勃鲁盖尔,《狂欢节与四旬斋的争斗》,1559年
使用方式
以IlPost文章为例的示例代码:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
model = AutoModelForSeq2SeqLM.from_pretrained("efederici/text2tags")
tokenizer = AutoTokenizer.from_pretrained("efederici/text2tags")
article = '''
童年时他曾担忧世间再无新事物可发现。但正是他的研究推翻了这个想法:1953年,弗朗西斯·克里克与詹姆斯·沃森共同构建了首个DNA模型——这段决定生物独特性状的长编码序列。
这项发现为他赢得了诺贝尔医学奖。其传记《弗朗西斯·克里克——DNA发现者》近期由Codice出版社发行,作者马特·里德利讲述了这位解密生命本质的科学家的一生。
'''
def 生成标签(文本: str):
""" 根据文本生成标签 """
文本 = 文本.strip().replace('\n', '')
文本 = '摘要: ' + 文本
编码文本 = tokenizer.encode(文本, return_tensors="pt")
标签id = model.generate(编码文本,
num_beams=4,
no_repeat_ngram_size=2,
max_length=20,
early_stopping=True)
输出 = tokenizer.decode(标签id[0], skip_special_tokens=True)
return 输出.split(', ')
标签 = 生成标签(文章)
print(标签)
长文档处理
假设段落以'\n\n'分隔:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import itertools
import re
model = AutoModelForSeq2SeqLM.from_pretrained("efederici/text2tags")
tokenizer = AutoTokenizer.from_pretrained("efederici/text2tags")
article = '''
童年时他曾担忧世间再无新事物可发现。但正是他的研究推翻了这个想法:1953年,弗朗西斯·克里克与詹姆斯·沃森共同构建了首个DNA模型——这段决定生物独特性状的长编码序列。
这项发现为他赢得了诺贝尔医学奖。其传记《弗朗西斯·克里克——DNA发现者》近期由Codice出版社发行,作者马特·里德利讲述了这位解密生命本质的科学家的一生。
'''
def 分词(文本):
输入 = 文本
输出 = re.sub('[^A-Za-z0-9]+', ' ', 输入)
return 输出.split()
def 子集检测(文本1, 文本2):
return all(标签 in 分词(文本1.lower()) for 标签 in 文本2.split())
def 清洗标签(文本, 标签列表):
return [标签 for 标签 in 标签列表 if 子集检测(文本, 标签)]
def 分段处理(文本, 最大长度):
段落列表 = list(filter(lambda x : x != '', 文本.split('\n\n')))
段落长度 = [len(tokenizer.encode(段)) for 段 in 段落列表]
输出 = []
for 序号, 段 in enumerate(段落列表):
索引 = len(输出)
if 索引 > 0 and 段落长度[序号] + len(tokenizer.encode(输出[索引-1])) <= 最大长度:
输出[索引-1] = "".join(输出[索引-1] + 段)
else:
输出.append(段)
return 输出
def 获取标签(文本, 生成参数):
输入文本 = '摘要: ' + 文本.strip().replace('\n', ' ')
编码文本 = tokenizer.encode(输入文本, return_tensors="pt")
with torch.no_grad():
标签id = model.generate(编码文本, **生成参数)
输出 = []
for 标签组 in 标签id:
清洗后 = 清洗标签(
文本,
list(set(tokenizer.decode(标签组, skip_special_tokens=True).split(', ')))
)
输出.append(清洗后)
return list(set(itertools.chain(*输出)))
def 标签生成(文本, 最大长度, 生成参数):
分段文本 = 分段处理(文本, 最大长度)
所有标签 = [获取标签(段, 生成参数) for 段 in 分段文本]
扁平标签 = itertools.chain(*所有标签)
return list(set(扁平标签))
参数 = {
"min_length": 0,
"max_length": 30,
"no_repeat_ngram_size": 2,
"num_beams": 4,
"early_stopping": True,
"num_return_sequences": 4,
}
标签 = 标签生成(文章, 512, 参数)
print(标签)
技术概览
- 模型架构: T5 (it5-small)
- 语言: 意大利语
- 下游任务: 摘要生成(用于主题标注)
- 训练数据: 定制数据集
- 代码示例: 参见上文
- 基础设施: 1×T4 GPU