今天给大家推荐一款文本处理工具,可以Extract、Redact、Summarize、Refine、Translate、Interrogate,这个工具就是文档转换框架doctran。
欢迎关注公众号
doctran基于OpenAI的GPT模型和开源的NLP库来剖析文本数据。该工具也可以在LangChain框架document_transformers
模块内使用。(本质上是对LLM和NLP库的封装)
Github: https://github.com/psychic-api/doctran
Example: https://github.com/psychic-api/doctran/blob/main/examples.ipynb
1. 安装
pip install doctran
2. 使用
- 初始化设置
from doctran import Doctran
OPENAI_API_KEY = ''
OPENAI_MODEL = ''
doctran = Doctran(openai_api_key=OPENAI_API_KEY,openai_model=OPENAI_MODEL)
document = doctran.parse(content="your_content_as_string")
注:修改openai_api_base
、使用其他LLM等可在源码中修改即可。
- Extract
针对任何有效的JSON模式,使用OpenAI的函数调用从文档中提取结构化数据。
from doctran import ExtractProperty
properties = ExtractProperty(
name="millenial_or_boomer",
description="A prediction of whether this document was written by a millenial or boomer",
type="string",
enum=["millenial", "boomer"],
required=True
)
document = await document.extract(properties=properties).execute()
- Redact
使用spaCy
模型从文档中删除姓名、电子邮件、电话号码和其他敏感信息。在本地运行,以避免将敏感数据发送到第三方API。
document = await document.redact(entities=["PERSON", "EMAIL_ADDRESS", "PHONE_NUMBER", "US_SSN"]).execute()
- Summarize
总结文档中的信息。可以传递token_limit
以配置摘要的大小,然而OpenAI可能不会遵循此限制。
document = await document.summarize().execute()
- Refine
除非与特定主题相关,否则从文档中删除所有信息。
document = await document.refine(topics=['marketing', 'meetings']).execute()
- Translate
将文本翻译成另一种语言。
document = await document.translate(language="spanish").execute()
- Interrogate
将文档中的信息转换成问答格式。最终用户的查询通常以问题的形式提出,因此将信息转换为问题并从这些问题创建索引,通常在使用向量数据库进行上下文检索时能够产生更好的结果。
document = await document.interrogate().execute()
Interrogate
可以帮助构造大模型有监督微调阶段的问答对。
3. 总结
doctran使用简单,可以用于日常工作中的数据处理。