langchain_summarizer的使用以及报错解决:OSError: Can‘t load tokenizer for ‘gpt2‘.

本文介绍了如何在LangChainSummarizer中使用ChatGLM进行文档摘要,包括从无ChatGLM类到找到官方文档的过程,本地部署ChatGLMAPI的设置,以及遇到的OSError问题的解决方法,旨在帮助读者避免常见陷阱。
摘要由CSDN通过智能技术生成

一、相关资料

LangChain summarizer是一个可以利用大语言模型生成文档摘要的工具。本人在实操过程中,主要参阅了以下资料:

文章一:ChatGPT生成英文摘要

LangChain Summarizer:一个让你轻松生成文档摘要的神奇工具icon-default.png?t=N7T8https://blog.csdn.net/FrenzyTechAI/article/details/131524746文章二:ChatGLM生成中文摘要

ChatGLM-6B + LangChain 实践icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/630147161

文章三:官方文档关于ChatGLM类的使用

ChatGLM | 🦜️🔗 Langchainicon-default.png?t=N7T8https://python.langchain.com/docs/integrations/llms/chatglm

二、使用过程

1.在根据文章二的博主在写文章时,LangChain中并没有ChatGLM类。大概半个月后,LangChain貌似添加了ChatGLM类,通过评论区我找到了官方关于ChatGLM类使用的说明(即文章三)。文章二中博主自己定义了一个GLM类,按照文章三的示范,替换成官方已有的ChatGLM类即可。

关于ChatGLM类里的具体参数及含义,可以参阅:langchain_community.llms.chatglm — 🦜🔗 LangChain 0.1.1icon-default.png?t=N7T8https://api.python.langchain.com/en/latest/_modules/langchain_community/llms/chatglm.html

2.如果ChatGLM是部署在本地,需要先运行ChatGLM中的api.py(一样把里面的模型路径改成你自己的模型路径),生成服务端口,其他的无需改动。

api.py需要一直运行,而且貌似在命令窗口运行会报错,找不到本地模型。可以在pycharm开两个窗口,一个运行langchain summarizer,一个运行api。默认url的就是"http://127.0.0.1:8000",虽然运行api后会显示"Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)",但是不用管它。

三、报错及解决:OSError: Can't load tokenizer for 'gpt2'.

报错显示,langchain里面确实有试图加载GPT-2 tokenizer。

直接去hugging face上找到GPT-2的模型下载到本地。

https://huggingface.co/gpt2/tree/mainicon-default.png?t=N7T8https://huggingface.co/gpt2/tree/main再根据报错的指引,把langchain里的那句程序改掉,GPT2TokenizerFast.from_pretrained("gpt2"),把gpt2改成自己的路径。

大功告成!

前人多探路,后人少踩坑。希望对你有所帮助!!

  • 26
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个基于Python的文本摘要器的简单代码示例: ```python import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize, sent_tokenize from heapq import nlargest def summarize(text, n): """ 摘要生成器函数 :param text: 原始文本 :param n: 摘要长度 :return: 摘要文本 """ # 分句 sentences = sent_tokenize(text) # 分词 words = word_tokenize(text) # 停用词列表 stop_words = set(stopwords.words('english')) # 计算单词频率 word_freq = {} for word in words: if word.lower() not in stop_words: if word not in word_freq.keys(): word_freq[word] = 1 else: word_freq[word] += 1 # 最高频率 max_freq = max(word_freq.values()) # 归一化词频 for word in word_freq.keys(): word_freq[word] = word_freq[word]/max_freq # 句子分值 sent_scores = {} for sent in sentences: for word in word_tokenize(sent.lower()): if word in word_freq.keys(): if len(sent.split(' ')) < 30: if sent not in sent_scores.keys(): sent_scores[sent] = word_freq[word] else: sent_scores[sent] += word_freq[word] # 摘要句子 summary_sents = nlargest(n, sent_scores, key=sent_scores.get) # 生成摘要 summary = ' '.join(summary_sents) return summary ``` 使用示例: ```python text = "在这里输入需要摘要的原始文本。" summary = summarize(text, 3) print(summary) ``` 该代码使用NLTK库进行英文分句、分词和停用词过滤。它计算每个单词的频率,并将其归一化。然后,它计算每个句子的分值,将较短的句子过滤掉,并使用heapq库获取分值最高的n个句子作为摘要。最后,它将这些句子合并成一个文本字符串并返回。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值