六、LLM模块¶
目前大模型本地化使用越来越方便,
模块 |
函数(类) |
功能 |
---|---|---|
LLM |
text_analysis_by_llm(text, prompt, base_url, api_key, model_name, temperature, output_format) |
使用大模型进行文本分析 |
6.1 analysis_by_llm()¶
使用大模型(本地或API)进行文本分析,从非结构化的文本数据中识别模式、提取关键信息、理解语义,并将其转化为结构化数据以便进一步分析和应用。
ct.analysis_by_llm(text, prompt, base_url, api_key, model_name, output_format, max_retries, return_df)
text: 待分析的文本
prompt 提示Prompt, 默认 prompt="根据评论内容,返回文本的情感类别(pos、neg)", 可判断文本pos或neg
base_url: 大模型API接口, 默认base_url='', 默认使用的本地Ollama搭建服务的API接口;
api_key: 大模型API对应的KEY, 默认api_key='' 表示使用的本地Ollama搭建服务
model_name: 模型名;默认使用 model_name="qwen2.5:3b"
temperature: 控制模型输出结果的随机性,取值范围0到无穷, 常用的范围[0, 1]。虽然理论上可以设置大于 1 的值,但这样会导致输出过于随机,通常不推荐这样做。需要结合任务确定取值
高准确性一致性任务,如情感分析、文本分类、事实性回答, 建议temperature=0
高创造性和多样性任务, 如故事写作、头脑风暴等, 建议temperature=0.7
实验性或探索性任务,较高的
temperature
值(如 1.0 以上,但一般不推荐超过 2.0)
output_format: 设置分析结果的输出格式; 默认output_format = {'label': str, 'score': float}, 输出结果为字典, 含字段类别字段label和数值字段score
max_retries: 最大失败次数, 默认max_retries=3
return_df: 返回结果是否为dataframe, 默认False
实验数据为外卖评论, 今天咱们做个有难度的文本分析任务,从不同维度(味道、速度、服务)对外卖评论进行打分(-1.0~1.0)。
import cntext as ct
PROMPT = '从口味taste、速度speed、服务service三个维度, 对外卖评论内容进行文本分析, 分别返回不同维度的分值(分值范围-1.0 ~ 1.0)'
BASE_URL = 'https://dashscope.aliyuncs.com/compatible-mode/v1'
API_KEY = '你的API-KEY'
MODEL_NAME = 'qwen-max'
# 味道、速度、服务
OUTPUT_FORMAT = {'taste': float, 'speed': float, 'service': float}
COMMENT_CONTENT = '太难吃了'
# 使用
# result = ct.analysis_by_llm(text=COMMENT_CONTENT,
# 或
result = ct.text_analysis_by_llm(text=COMMENT_CONTENT,
prompt=PROMPT,
base_url=BASE_URL,
api_key=API_KEY,
model_name=MODEL_NAME,
temperature=0,
output_format=OUTPUT_FORMAT,
max_retries=3,
return_df=False)
result
Run
{'taste': -1.0, 'speed': 0.0, 'service': 0.0}
批量运算
import pandas as pd
import cntext as ct
# 构造实验数据
data = ['速度非常快,口味非常好, 服务非常棒!',
'送餐时间还是比较久',
'送单很快,菜也不错赞',
'太难吃了']
df = pd.DataFrame(data, columns=['comment'])
# 分析函数
def llm_analysis(text):
result = ct.analysis_by_llm(text=text,
prompt= '从口味taste、速度speed、服务service三个维度, 对外卖评论内容进行文本分析, 分别返回不同维度的分值(分值范围-1.0 ~ 1.0)',
base_url='https://dashscope.aliyuncs.com/compatible-mode/v1',
api_key='你的API-KEY',
model_name='qwen-max',
output_format={'taste': float, 'speed': float, 'service': float}
)
return pd.Series(result)
# 批量运算
df2 = df['comment'].apply(llm_analysis)
res_df = pd.concat([df, df2], axis=1)
# 保存分析结果
res_df.to_csv('result.csv', index=False)
res_df
LLM更多详细内容,请阅读 教程 | 使用在线大模型将文本数据转化为结构化数据