Skip to main content

适用于 NoneBot2 的词云插件

Project description

nonebot

NoneBot Plugin WordCloud

✨ NoneBot 词云插件 ✨

license pypi python codecov/>
  </a>
  <a href= QQ Chat Group

安装

nb plugin install nonebot-plugin-wordcloud

如需使用可选文本分析后端,可额外安装:

pip install "nonebot-plugin-wordcloud[rjieba]"

Note

如需通过命令设置词云形状,则需使用支持 http 请求的驱动器,如 httpx 和 aiohttp。

请参考 配置驱动器 文档进行设置。

例如:

DRIVER=~httpx

DRIVER=~aiohttp

DRIVER=~fastapi+~httpx

命令

  • 查看帮助

待插件启动完成后,发送 /词云 可获取插件使用方法。

  • 查看词云
功能 命令 权限 说明
查看今日词云 /今日词云 所有人(command.wordcloud.query 获取今日的词云
查看昨日词云 /昨日词云 所有人(command.wordcloud.query 获取昨日的词云
查看本周词云 /本周词云 所有人(command.wordcloud.query 获取本周的词云
查看上周词云 /上周词云 所有人(command.wordcloud.query 获取上周的词云
查看本月词云 /本月词云 所有人(command.wordcloud.query 获取本月的词云
查看上月词云 /上月词云 所有人(command.wordcloud.query 获取上月的词云
查看年度词云 /年度词云 所有人(command.wordcloud.query 获取年度的词云
查看历史词云 /历史词云 所有人(command.wordcloud.query 获取指定时间段的词云

数据范围说明:

  • wordcloud_default_personal 配置为 False(默认)时,上述命令默认获取群组数据
  • wordcloud_default_personal 配置为 True 时,上述命令默认获取个人数据
  • 可以使用前缀明确指定数据范围:
    • 添加 我的 前缀获取个人词云,如 /我的今日词云
    • 添加 本群 前缀获取群组词云,如 /本群今日词云

权限插件说明:

本插件集成 nonebot-plugin-permission, 可通过权限插件管理以下资源:

权限资源 默认拥有者 说明
command.wordcloud.query 所有用户 使用词云查询命令
command.wordcloud.query_other PERMISSION_SUPERUSERS 通过 @ 查看他人词云
command.wordcloud.mask PERMISSION_SUPERUSERS、群主/管理员 设置或删除本群形状
command.wordcloud.default_mask PERMISSION_SUPERUSERS 设置或删除默认形状
command.wordcloud.schedule PERMISSION_SUPERUSERS、群主/管理员 管理定时发送
  • 管理词云
功能 命令 权限 说明
设置词云形状 /设置词云形状 command.wordcloud.mask 发送一张图片作为当前群词云形状,每个群各自独立
删除词云形状 /删除词云形状 command.wordcloud.mask 删除本群词云形状
设置词云默认形状 /设置词云默认形状 command.wordcloud.default_mask 发送一张图片作为所有词云的默认形状,每个群都会改变
删除词云默认形状 /删除词云默认形状 command.wordcloud.default_mask 删除默认词云形状,继续使用词云默认的矩形
开启词云定时发送 /开启词云<类型>定时发送
/开启词云<类型>定时发送 + [时间]
command.wordcloud.schedule 开启本群定时发送词云,类型支持 每日每周每月每年。默认发送上一完整周期:每日发送昨日词云;每周在周一发送上周词云;每月在 1 日发送上月词云;每年在 1 月 1 日发送去年词云。
添加 --last 或使用 开启词云每周周期末定时发送 这样的快捷命令,可在周期最后一天发送截至触发时间的词云;添加 --complete 或使用 开启词云每周完整周期定时发送 可显式使用完整周期模式。
没有指定模式时使用 wordcloud_default_schedule_mode。没有指定时间时,完整周期默认在 00:00 发送,周期末默认在 23:59:59 发送;如果配置了 wordcloud_default_schedule_time,则使用该配置。
如果时间没有包含时区信息,则根据 wordcloud_timezone 配置项确定时区。
时间的格式为 ISO 8601,例如:开启词云每周定时发送 23:59:59
关闭词云定时发送 /关闭词云<类型>定时发送 command.wordcloud.schedule 关闭本群指定类型的词云定时发送
查看词云定时发送状态 /词云<类型>定时发送状态 command.wordcloud.schedule 查看指定类型的定时发送状态

配置项

配置方式:直接在 NoneBot 全局配置文件(.env) 中添加以下配置项

配置项 类型 默认值 说明
wordcloud_width int 1920 生成图片的宽度
wordcloud_height int 1200 生成图片的高度
wordcloud_background_color str black 生成图片的背景颜色
wordcloud_colormap Union[str, List[str]] viridis 生成图片的字体 色彩映射表(当值为列表时会随机选择其中之一)
wordcloud_font_path str 自带的字体(思源黑体) 生成图片的字体文件位置
wordcloud_analyzer str jieba 文本分析后端,可选 jiebarjiebajieba 后端沿用 TF-IDF 关键词权重;rjieba 后端使用词频权重
wordcloud_analyzer_options Dict[str, Any] {} 传递给文本分析后端的额外参数。jieba 支持传递给 jieba.analyse.extract_tags 的参数;rjieba 支持 modedefaultsearchall)和 hmm
wordcloud_min_word_length int 2 rjieba 后端统计词频时保留的最小词长
wordcloud_stopwords_path str None 停用词表位置,用来屏蔽某些词语。jieba 后端会传递给 jieba.analyse.set_stop_wordsrjieba 后端会按行读取词语并过滤
wordcloud_userdict_path str None 自定义词典位置。jieba 后端会加载为结巴词典;rjieba 后端暂不支持该配置
wordcloud_timezone str None 用户自定义的 时区
留空则使用系统时区,具体数值可参考:时区列表
例如:Asia/Shanghai
wordcloud_default_schedule_mode str 完整周期 默认定时发送模式,可选 完整周期周期末
wordcloud_default_schedule_time str 根据发送模式决定 默认定时发送时间,当开启词云定时发送时没有提供具体时间,将会在这个时间发送词云。
未配置时,完整周期默认为 00:00,周期末默认为 23:59:59;配置后会覆盖所有默认发送模式的时间
wordcloud_options Dict[str, Any] {} WordCloud 传递的参数。
拥有最高优先级,将会覆盖以上词云的配置项,
例如:{"background_color":"black","max_words":2000,"contour_width":3, "contour_color":"steelblue"}
wordcloud_exclude_user_ids Set[str] set() 排除的用户 ID 列表(全局,不区分平台),
例如:["123456","456789"]
wordcloud_reply_message bool False 发送词云图片时是否回复触发它的消息
wordcloud_default_personal bool False 是否默认获取个人数据,设为 True 时默认生成个人词云,
设为 False 时默认生成群组词云

文本分析后端

词云生成前会先把聊天文本分析为“词语 -> 权重”的映射,再交给 wordcloud 生成图片。不同后端的分词方式、权重算法和依赖体积不同,可以通过 wordcloud_analyzer 选择。

后端 额外依赖 权重算法 适合场景 主要限制
jieba 默认安装 TF-IDF 默认选择,兼容旧版本生成效果 jieba 本身维护较慢,但支持停用词和用户词典,行为与旧版本保持一致
rjieba nonebot-plugin-wordcloud[rjieba] 词频 希望使用更轻量、更快的 jieba 风格分词 暂不支持 wordcloud_userdict_path;没有 TF-IDF 关键词抽取

jieba

jieba 是默认后端,不需要额外配置:

wordcloud_analyzer=jieba

它会继续使用 jieba.analyse.extract_tags 提取关键词,权重为 TF-IDF。wordcloud_stopwords_path 会传递给 jieba.analyse.set_stop_wordswordcloud_userdict_path 会传递给 jieba.load_userdict

wordcloud_analyzer_options 可传递给 jieba.analyse.extract_tags,例如:

{
  "topK": 200,
  "allowPOS": ["n", "vn", "v"]
}

rjieba

rjieba 使用 Rust 实现的 jieba 风格分词,适合想减少分词耗时、但不需要 TF-IDF 权重的场景:

wordcloud_analyzer=rjieba

它会按分词结果统计词频,并使用 wordcloud_min_word_lengthwordcloud_stopwords_path 过滤词语。当前 rjieba Python 绑定没有暴露用户词典加载接口,因此会忽略 wordcloud_userdict_path 并记录警告。

wordcloud_analyzer_options 支持:

{
  "mode": "search",
  "hmm": true
}

其中 mode 可选 defaultsearchall

许可证

项目代码使用 MIT License 发布。包内自带的默认字体 SourceHanSans.otf 来自 Source Han Sans, 按 SIL Open Font License 1.1 许可随包分发;完整字体许可证见 nonebot_plugin_wordcloud/SourceHanSans.LICENSE.txt

鸣谢

插件依赖 nonebot-plugin-chatrecorder 提供消息存储。

感谢以下开发者作出的贡献:

contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_wordcloud-0.11.0.tar.gz (7.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nonebot_plugin_wordcloud-0.11.0-py3-none-any.whl (7.3 MB view details)

Uploaded Python 3

File details

Details for the file nonebot_plugin_wordcloud-0.11.0.tar.gz.

File metadata

File hashes

Hashes for nonebot_plugin_wordcloud-0.11.0.tar.gz
Algorithm Hash digest
SHA256 987a7313b940d971a2e86ea63a35fbd2bb77286cbbe23e541d25ef904f89b915
MD5 da040831705b3c988b0e227ad54de352
BLAKE2b-256 07796469e3877e1f5a61595177d3f45d26ba14497d8dc70b48ca89df0396e533

See more details on using hashes here.

Provenance

The following attestation bundles were made for nonebot_plugin_wordcloud-0.11.0.tar.gz:

Publisher: release.yml on he0119/nonebot-plugin-wordcloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nonebot_plugin_wordcloud-0.11.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_wordcloud-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f8d4c77476621974f79e928667f0979bb415823b89bd367732d3fa6b5a5886ee
MD5 0545f58a7bdb2e412ba1bc0a37e37c49
BLAKE2b-256 9c24951d33ffb520a37cfef2667f056991783f99e4a72a3910db31df43c90cfc

See more details on using hashes here.

Provenance

The following attestation bundles were made for nonebot_plugin_wordcloud-0.11.0-py3-none-any.whl:

Publisher: release.yml on he0119/nonebot-plugin-wordcloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page