模型:
fabiochiu/t5-base-tag-generation
该模型是在 190k Medium Articles 数据集上进行微调的,用于使用文章文本内容作为输入预测文章标签。通常被定义为多标签分类问题,但该模型将标签生成视为文本生成任务(受到 text2tags 的启发)。
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM import nltk nltk.download('punkt') tokenizer = AutoTokenizer.from_pretrained("fabiochiu/t5-base-tag-generation") model = AutoModelForSeq2SeqLM.from_pretrained("fabiochiu/t5-base-tag-generation") text = """ Python is a high-level, interpreted, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation. Python is dynamically-typed and garbage-collected. """ inputs = tokenizer([text], max_length=512, truncation=True, return_tensors="pt") output = model.generate(**inputs, num_beams=8, do_sample=True, min_length=10, max_length=64) decoded_output = tokenizer.batch_decode(output, skip_special_tokens=True)[0] tags = list(set(decoded_output.strip().split(", "))) print(tags) # ['Programming', 'Code', 'Software Development', 'Programming Languages', # 'Software', 'Developer', 'Python', 'Software Engineering', 'Science', # 'Engineering', 'Technology', 'Computer Science', 'Coding', 'Digital', 'Tech', # 'Python Programming']
该数据集由Medium文章及其标签组成。然而,每篇Medium文章最多只能有五个标签,因此作者需要选择他/她认为最合适的标签(主要是为了与搜索引擎优化相关)。这意味着一个带有“Python”标签的文章可能没有“编程语言”标签,即使前者暗示了后者。
为了解决这个问题,使用了一个手工制作的大约1000个标签的分类体系。利用这个分类体系,对每篇文章的标签进行了扩充处理(例如,带有“Python”标签的文章也将有“编程语言”标签,因为分类体系表明“Python”属于“编程语言”)。分类体系不是公开的,如果您有兴趣,请发送电子邮件至chiusanofabio94@gmail.com。
该模型在大约50000篇文章上进行了单个时期的训练,并在训练过程中未使用的1000篇随机文章上进行了评估。
训练过程中使用了以下超参数: