机器学习历程

清华源

复制代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ***#要安装的name

删除下载到本地的安装包

复制代码
pip cache purge 

C:\Users\16385\AppData\Local\Programs\Python\Python311\Lib\site-packages

分词:有jieba分词(处理中文)和nltk(处理英文)

1、nltk

1)word_tokenize

word_tokenize 是一个用于将句子分割成单词(或标记,tokens)的函数,称为分词(tokenization)。分词的目的是将一段文本切分成更小的、可操作的单元,如单词或标点符号。

python 复制代码
import nltk
from nltk.tokenize import word_tokenize

# 下载必要的NLTK资源
nltk.download('punkt')

text = "Hello, world! This is a test sentence."
tokens = word_tokenize(text)

print(tokens)
#结果
['Hello', ',', 'world', '!', 'This', 'is', 'a', 'test', 'sentence', '.']

2、scikit-learn(sklearn)

1)TF-IDF

核心思想是:如果一个词在一篇文档中频繁出现但在其他文档中很少出现,这个词可能具有很强的区分性。

TF-IDF 是由两部分组成的:词频(Term Frequency, TF)和逆文档频率(Inverse Document Frequency, IDF)。

  1. 词频(TF)

词频表示一个词在一个文档中出现的频率。

  1. 逆文档频率(IDF)

逆文档频率衡量一个词在整个文档集合中出现的稀有程度。

  1. TF-IDF

TF-IDF 是 TF 和 IDF 的乘积:

3、gensim

1)Word2Vec

定义

思想:能够将词汇映射到连续向量空间,使得语义相似的词在向量空间中距离较近。

Word2Vec 通过两个主要模型来学习词向量:

训练词向量模型

python 复制代码
model = gensim.models.Word2Vec (documents, vector_size=150, window=10, min_count=2, workers=10)
  • vector_size=150: 这是词向量的维度。每个词将被表示为一个150维的向量。较高的维度通常能够捕捉到更多的语义信息,但也需要更多的计算资源。

**vector_size=150,**即每个单词将被表示为一个150维的向量。这意味着每个单词都由150个实数值组成,这些实数值代表了单词在高维空间中的位置。

这些元素本身并没有直接的可解释性,但它们的组合表示了单词的语义特征。

Word2Vec模型通过训练大量的文本数据来生成词向量(上述的词向量是通过给的文件训练得到的,如果不是特殊领域的,可以直接调用已经训练好的开源库)。在训练 过程中,模型会调整向量的值,使得相似的单词在向量空间中的距离更近 。相似性通常通过余弦相似度来衡量。

  • window=10: 这是上下文窗口的大小。Word2Vec算法在训练时会考虑一个词前后10个词的上下文。窗口越大,模型捕捉到的上下文信息越多,但计算复杂度也会增加。

  • min_count=2: 这是忽略词频小于2次的词。即在训练过程中,只考虑出现频率至少为2次的词,稀有词将被忽略。这有助于减少噪音,提升模型的性能。

  • workers=10: 这是并行训练时使用的CPU核心数。Gensim的Word2Vec实现支持多线程训练,以加速训练过程。这里指定了使用10个CPU核心。

python 复制代码
model.train(documents, total_examples=len(documents), epochs=10)

对模型进行进一步的训练或重新训练

epochs=10:

  • 这是训练过程中迭代整个语料库的次数。在这个例子中,模型将遍历整个文档集10次。
  • 更多的epoch通常会使模型学到更多的特征,但过多的epoch也可能导致过拟合,尤其是在较小的数据集上。

Word2Vec的使用场景

Word2Vec有很多应用场景。想象一下,如果你需要构建一个情感词典,通过在大量用户评论上训练Word2Vec模型可以帮助你实现这一点。你不仅可以获得情感词典,还可以获得词汇表中大多数单词的词典。

除了原始的非结构化文本数据,你还可以将Word2Vec用于更结构化的数据。例如,如果你有一百万个Stack Overflow问题和答案的标签,你可以找到与给定标签相关的标签,并推荐相关标签供探索。你可以通过将每组共现标签视为一个"句子"并在这些数据上训练Word2Vec模型来实现这一点。当然,你仍然需要大量的示例数据才能使其发挥作用。

4、其他

1)logging

python 复制代码
import logging

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

logging.basicConfig() : 这是一个方便的方法,用于一次性配置logging模块的基本设置,如日志格式、日志级别等。

  • %(asctime)s: 日志记录的时间,格式为ISO 8601格式(默认情况)。
  • %(levelname)s: 日志级别名(如INFO, DEBUG, WARNING等)。
  • %(message)s: 实际的日志消息内容。

level : 这是一个整数或日志级别名,设置日志记录的最低级别。只有级别等于或高于该级别的日志消息才会被记录。logging.INFO表示设置日志级别为INFO,即INFO及以上级别(如WARNING, ERROR, CRITICAL)的消息都会被记录。(INFO:常规信息,表示正常运行的消息。)

日志级别:DEBUG,INFO,WARNING, ERROR, CRITICAL

2)打开文件操作

python 复制代码
with gzip.open('reviews_data.txt.gz', 'rb') as f:

with : 这是一个上下文管理器(context manager),用于确保在代码块执行完毕后,文件能够被正确地关闭。使用with语句可以避免手动调用f.close(),即使在代码块中发生异常,文件也会被安全关闭。

gzip.open(): 这个函数用于打开一个gzip压缩文件,并返回一个文件对象,可以像普通文件一样进行读取或写入操作。

  • 'r'表示读模式(read)。
  • 'b'表示二进制模式(binary),这意味着文件将以二进制模式打开。gzip文件通常是二进制文件,因此需要使用'rb'模式。

3)余弦相似度

余弦相似度(Cosine Similarity)是一种常用的度量两个向量之间相似度的方法。它通过计算两个向量之间的夹角余弦值来衡量它们的相似程度。值越接近1,表示两个向量越相似;值越接近-1,表示两个向量越不相似。

相关推荐
SHIPKING39336 分钟前
【机器学习&深度学习】什么是下游任务模型?
人工智能·深度学习·机器学习
DKPT4 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
子燕若水5 小时前
Unreal Engine 5中的AI知识
人工智能
极限实验室6 小时前
Coco AI 实战(一):Coco Server Linux 平台部署
人工智能
杨过过儿6 小时前
【学习笔记】4.1 什么是 LLM
人工智能
巴伦是只猫6 小时前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
大千AI助手6 小时前
DTW模版匹配:弹性对齐的时间序列相似度度量算法
人工智能·算法·机器学习·数据挖掘·模版匹配·dtw模版匹配
AI生存日记6 小时前
百度文心大模型 4.5 系列全面开源 英特尔同步支持端侧部署
人工智能·百度·开源·open ai大模型
LCG元7 小时前
自动驾驶感知模块的多模态数据融合:时序同步与空间对齐的框架解析
人工智能·机器学习·自动驾驶