约 192GB 短信样本如何标记分类?

53 天前
 andforce

之前开发了一个《垃圾短信过滤 App 》- 胖鱼信使

为什么要重新造轮子?

主要是 2 个原因: 1: 市面上没有完全不联网的垃圾短信过滤 App 2: 想学习一下人工智能分类

192.36 GB 纯文本短信数据

上架研发初期,垃圾短信的训练样本都是来自互联网,然后加上自己和家人的几百条数据,

偶尔有用户会给我回馈几条,还能处理。

后来想更提高一把模型准确性,想多搞点样本,有个用户提供了这些个短信数据。

192,184,722,019 字节(磁盘上的 192.36 GB )

纯文本数据,这也太多了。。。。

有什么工具能对其进行批量标注吗?

5426 次点击
所在节点    程序员
65 条回复
paopjian
52 天前
先用小模型洗数据呗,白嫖 aistudio 啥的,用百度的模型先把营销短信洗出来,其他的再慢慢打标签, 全给 LLM 跑消耗太高了
aoguai
52 天前
hrwhisper/SpamMessage: 中文垃圾短信识别(手写分类器)
https://github.com/hrwhisper/SpamMessage

junxincai/ChineseTextClassification: 自然语言处理之中文文本分类(以垃圾短信识别为例)
https://github.com/junxincai/ChineseTextClassification

单纯要识别垃圾短信/正常短信,就是个二分类的问题,使用传统方法即可。

如果要多标签的话就是个体力活了,因为您这个应该是没有任何标签的。你首先需要分类打标签,才能使用机器学习也好大模型也好才能训练。

或者干脆分类也交给机器学习(AI)来搞定,这种情况下建议像楼上说的那样先聚类,挑选聚类中心的一部分短信来用于训练识别某类短信,然后再用训练好的模型重新给短信打标签,再训练。

最简单的方法就是二分类+白名单关键词。
aoguai
52 天前
一个简单的个人思路是:

如果使用二分类方案的话,用白名单关键词+自己整理一些特定的正则表达式匹配。对上即是正样本。
跑一遍没对上的,全归为负样本。
然后就可以用传统方法开始训练了,传统方法对硬件要求不高,没 GPU 都没问题。

然后拿模型开始验证即可,效果不好就调参,漫长的调参,调整白名单关键词+自己整理一些特定的正则表达式匹配,直到满意为止。

(另外同求数据集
yuchting
52 天前
把大象装进冰箱需要几步?
ospider
52 天前
程序员真的是,就关心技术问题。这么多个人隐私数据,就是个烫手山芋,你先看下是否合规吧,别把自己弄进去了
ospider
52 天前
还有求分享的,你真不怕是钓鱼么……
yuchting
52 天前
把大象装进冰箱需要几步?
0 、如何吧文本词条化?然后把词条变成向量,然后吧每个短信的词条向量算出来。中文词汇五万六千余条,每个短信词汇大概在 5-10 。
1 、如何合理的抽样数据?大样本太多,需要降低样本。可以用随机抽样?
2 、对降低的样本进行人工标记。标记种类,比如骚扰、乱码文字、京东、淘宝、诈骗、淫秽等等。
3 、对标记样本的词汇向量机器监督学习( CNN ,RNN ,KNN 等)。分为两拨,一波学习一波测试。
4 、学习完成之后,再抽样大样本数据进行评价(样本数据划分词条,然后使用词条作为输入,标签作为输出)。
5 、评价结果如果和人的评价结果一基本一致的话,表示这个模型就很好了。
CapNemo
52 天前
最近正好在搞类似工作,有个很有意思的框架叫 TnT-LLM 可以借鉴一下。大体思路是让模型去概括信息、提炼分类、标注样本,然后训练小模型去实际分类。
lyhiving
52 天前
@CapNemo 这个 TnT 很 cool
thevita
52 天前
得看具体数据分布,大体思路可以先用人工筛选规则降量,再用其他手段( LLM 等)处理长尾

assumption: 有大量同一类型、具备明确模式的数据

没处理过垃圾短信,但处理过其他类型的短信数据,不一定有用
512357301
52 天前
对标注不太懂,但这个数据量,处理起来确实比较麻烦,可以考虑 clickhouse 或者 duckdb
前者是数据库,比较重。
后者是单文件,轻量级一些,建议用后者。
先把原始文件切割成小份的,csv 格式最佳,然后用 duckdb 把 csv 清洗压缩成 parquet 格式,压缩率极高,性能也极好。
推荐阅读: https://mp.weixin.qq.com/s/z-_ixPeksB_PjFMNL7NA8Q
andforce
52 天前
@512357301 这个太好了,我现在正在我的 Mac 上一条一条往 MySQL 里导入。
我都不确定 MySql 能不能处理 7 亿条数据😵‍💫

数据清理还真的依赖一个牛逼的数据库才行
andforce
52 天前
@CapNemo 这个不知道最终的效果如何,如果我只想进行二元标注,就是分垃圾短信和正常短信,一旦标注出错,训练出来的模型感觉效果就差一些。
chempotato
52 天前
@ospider mega 网盘分享 应该不会出问题
yuankui
52 天前
大数据,spark ,hadoop 了解下
dode
52 天前
有些比较长的是商业合规短信,各种乱码超短短信铁定是垃圾短信
naclfish2333
52 天前
@yuxizhe 能不能跑起来主要看显存,glm-4 是 9B 的模型,全精度大概要占用到 17G 左右的显存。3090 单卡好像是 25G 左右,是足够了,但是 vllm 这个框架的策略是尽量占满显存的。

至于效果,只能是差强人意,我是要求模型分析词语和某个领域的相关性。直接输出输出一个 1 到 5 的数字,代表这个词和这个领域的相关性。

最后确实是可以正确分类,但是可能是 prompt 没写好或者分类的颗粒度分得太细了,导致分类的结果不是很一致。比如“电阻”模型会给出“5”,但是“电容”又会给出“4”。
locoz
52 天前
7 亿条里大概率有极其大量的重复内容,先去重、人工标记把一些一眼就能分类的都筛掉,应该会少很多
cocogovern
52 天前
先通过一个规模模型来做筛选,然后你再通过人工智能来分类不能完成的部分。
realpg
51 天前
会不会源文件 192GB 去掉包含"验证码"三个字的还剩 36MB

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1075541

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX