# ai_lib
**Repository Path**: bloomf/ai_lib
## Basic Information
- **Project Name**: ai_lib
- **Description**: AI相关的工具库案例
- **Primary Language**: Python
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-08-17
- **Last Updated**: 2024-08-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
AI项目参考案例
## 介绍
AI相关的工具库案例,以及部分智创俱乐部案例(需要另外申请权限)介绍
## AI辅助编程
关于各种各样辅助编程的工具和使用方法,参见[AI辅助编程](演示案例/辅助编程/README.md)。
## 环境安装
* 机器学习环境:
```shell
conda create -n ml python=3.8
conda activate ml
conda install scikit-learn
conda install ipykernel
pip install jieba
conda install xlrd seaborn
conda install gensim
python -m ipykernel install --user --name=ml
```
* keras环境:
```shell
conda create -n keras python=3.8
conda activate keras
pip install tensorflow==2.13
pip install keras==2.13.1
pip install pandas,jieba,scikit-learn,imblearn,matplotlib
conda install ipykernel
conda install gensim
python -m ipykernel install --user --name=keras --display-name="keras"
```
## NLP相关
### LLM大模型调用
使用LLM大模型做简单对话、函数调用等。LLM 是 “Large Language Model” 的缩写,即大型语言模型。大型语言模型是使用大量的文本数据进行训练的人工智能模型,能够理解和生成人类语言。它们通过学习海量的语言知识和模式,可以执行各种自然语言处理任务,例如文本生成、问答、翻译、摘要、情感分析等。
一些知名的 LLM 包括 GPT-3、GPT-4、文心一言等。这些模型具有很高的语言理解和生成能力,为自然语言处理领域带来了显著的进展和创新应用。
我们可以使用LLM完成一些文本处理任务,例如,将函数返回的数据查询结果转为“人话”,也可以将用户输入的“自然语言”转为函数参数,可以让LLM帮我们做数据清洗,对齐和整理等数据任务。
[LLM使用的快速示例入口](演示案例/LLM/README.md)
### 文本分类模型
#### 朴素贝叶斯
了解文本分类需要很多的基础知识,包括分词、tokenizer、向量化、停用词等。使用朴素贝叶斯分类器做分类是学习分类模型的一个入门案例。
这个案例使用朴素贝叶斯实现评论数据集分类。
案例:[大众点评分类案例](演示案例/文本分类/朴素贝叶斯/朴素贝叶斯.ipynb)
#### 其他机器学习文本分类案例
这个案例包含了数据预处理、word2vec词向量训练、引用第三方word2vec词向量、使用tf-idf向量、多种机器分类模型的效果对比。
* 先进行数据预处理:[数据预处理](演示案例/文本分类/机器学习/数据预处理.ipynb)
* 再词向量训练:[word2vec](演示案例/文本分类/机器学习/word2vec-Model.ipynb)
* 如果使用第三方词向量,参考这个:[sgns.sogou.word](演示案例/文本分类/sgns.sogou.word/sougouModeltest.ipynb)
* 使用[各类机器学习算法](演示案例/文本分类/机器学习/各类机器学习算法.ipynb)对比二分类效果。尝试使用了自己训练的词向量[word2vec](演示案例/文本分类/机器学习/word2vec-Model.ipynb)、tf-idf、第三方搜狗词向量(在预训练模型中寻找`sgns.sogou.word`)
#### Embed+各类序列模型
* [Embed+LSTM/CNN等各类序列模型对比](演示案例/文本分类/Embed_NN/Embed_多种模型.ipynb)
* 使用[使用外部语料对比](演示案例/文本分类/Embed_NN/使用外部语料对比.ipynb),尝试使用外部词向量和内置Embed对比,使用textCNN。
* 各种结构的[textCNN](演示案例/文本分类/Embed_NN/keras_textCNN.ipynb)例子
#### Torch_BILSTM
展示[基于torch的LSTM多分类](演示案例/文本分类/lst_torch/README.md)。
代码中使用的数据集为:`vectorfile.pkl`,保存在**预训练模型**目录中(见文件后面)。修改:
```python
X_train, X_test, y_train, y_test = load_data(r'存放vectorfile.pkl的目录')
```
#### Keras Bert
使用Keras框架调用Bert预训练模型实现[文本分类的例子](演示案例/文本分类/keras_bert/keras-bert评论分类.ipynb)。由于Bert预训练模型不方便放在git上,可以网络上搜索对应的模型`chinese_wwm_L-12_H-768_A-12`,或者到百度网盘下载:
```
通过网盘分享的文件:chinese_wwm_L-12_H-768_A-12
链接: https://pan.baidu.com/s/1faAGz1coL17CMBfoGK0WAw?pwd=jdvt 提取码: jdvt
--来自百度网盘超级会员v9的分享
```
模型下载后需要修改代码更新模型的保存位置。要求[安装keras环境](演示案例/conda环境安装/深度学习环境安装与熟悉.md)。
### 文本聚类
[最高评分电影文本聚类](演示案例/文本聚类/film.ipynb)
### NER模型
* [瑞金医院实体识别](演示案例/NER/README.md)(只做实体标注,不做关系识别)
### 第三方词嵌入
* [sougou](演示案例/Embedding/sgns.sogou.word/sougouModeltest.ipynb): 比较老的词嵌入,以词为单位,将词转向量。
* [Yinka](演示案例/Embedding/sgns.sogou.word/readme.md):实际上是以字为单位训练的文本嵌入,将文本转为向量。2024年Massive Text Embedding Benchmark榜单前列,小尺寸。
## 图形图像
### 人脸识别相关
人脸裁剪,人脸识别,人脸关键点检测,百度模型API调用
### 图像风格迁移
### 动漫化
### 表情迁移
### 图像生成
### 骨骼关键点检测
### 远程视频推送
==纪亦林补充==
### 摄像头应用
调用opencv实现摄像头视频采集,图片处理等demo
## 语音处理
### 语音转文本
==莫未文或者谢宇宸补充==
### 文本转语音
==莫未文或者谢宇宸补充==
### 音色渲染
==罗航补充==
### 从音视频中抽取文本
## 其他
### 向量相似度对比
将人脸关键点、姿态、文本、词语向量化后,可以进行相似度对比
## UI与可视化相关
### Streamlit
* **介绍**: Streamlit 是一个使用python语言用来创建数据应用程序的工具。可以使用它来非常快捷地创建一个前端界面,可以在浏览器或者手机端打开。比如,你有一些数据,想用图表展示出来,还想让人能在网页上通过按钮、输入框等与这些数据和图表互动,Streamlit 就能帮您快速实现,而且不需要您懂很多复杂的网页开发知识。
* [streamlit快速入门](./演示案例/streamlit/streamlit.md)
### echart
### QT应用
## 过往案例
介绍一下基本实现过程
### 桌语精灵
### 家居慧眼
### 动漫化转换
### 基于人脸识别的应用
### 线上体育锻炼助手
### 智能记账软件
### 就业辅助APP
### 小灵助手
### 参考文献书写合法性检测
书写参考文献是一件比较复杂的工作,非常容易出错。使用普通的正则表达式去检测参考文献书写合法性非常麻烦,不仅程序逻辑复杂,而且容易识别错误。例如,使用一些`'.',','`来作为每个关键部分的分割,会导致一些带有这些符号的书名或者作者名称识别混乱。而且用户如果出现书写的错误,也容易导致参考文献识别中,虽然发现了错误,但是说不清错误的具体原因。
可以采用**NER实体识别**的方式,将用户给出的参考文献(即使有大量的书写错误)中的实体按照规范提取出来。基于提取的结果,在做逻辑识别就非常简单了。

接下来的问题就是如何构建训练数据。毕竟NER标注是一件非常辛苦的事情,都使用人工标注不现实。可以采用LLM,实现对参考文献的标注,耗费不多的token,实现所需要的数据集。
项目仓库(**私有,需申请**):https://gitee.com/bloomf/reference_label
### 各类基于NLP的数据分析案例
* 各种评论分类: 文本转词向量/文本向量-->文本聚类-->抽取关键词了解用户观点-->观察热词和热点变化
## 项目参考资源
如何找到自己所需要的项目的经验,如何找到项目代码、模型等
### 百度AI studio
### 魔塔社区
### github
### huggingface
### kaggle
## 预训练模型目录
本项目中所有的预训练模型可以在百度网盘中搜索到:
```
通过网盘分享的文件:预训练模型
链接: https://pan.baidu.com/s/1xurA_-tRmbTGUe8jWwxBxQ?pwd=1tb6 提取码: 1tb6
--来自百度网盘超级会员v9的分享
```
## 书籍和学习资料
### Keras
### pytorch
## 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
## 贡献者
1. BLoomF@gitee.com (马老师)
2.