当前位置: 首页 > news >正文

360上做网站企业多语言网站开源

360上做网站,企业多语言网站开源,WordPress数据库搬迁,电子商务网站建设 精品课一、说明 本文是使用所有 SciKit Learns 预处理方法生成文本数字表示的深入解释和教程。对于以下每个矢量化器#xff0c;将给出一个简短的定义和实际示例#xff1a;one-hot、count、dict、TfIdf 和哈希矢量化器。 SciKit Learn 是一个用于机器学习项目的广泛库#xff0c;… 一、说明 本文是使用所有 SciKit Learns 预处理方法生成文本数字表示的深入解释和教程。对于以下每个矢量化器将给出一个简短的定义和实际示例one-hot、count、dict、TfIdf 和哈希矢量化器。 SciKit Learn 是一个用于机器学习项目的广泛库包括多种分类器和分类算法、训练和指标收集方法以及预处理输入数据的方法。在每个 NLP 项目中文本都需要矢量化才能被机器学习算法处理。矢量化方法包括独热编码、计数器编码、频率编码和词向量或词嵌入。其中一些方法在 SciKit Learn 中也可用。 本文的技术相关资源是 Python v3.11和 scikit-learn v1.2.2。所有示例也应该适用于较新的版本。这篇文章最初出现在塞巴的博客 admantium.com。 二、要求和使用的 Python 库 本文是有关使用 Python 进行 NLP 的博客系列的一部分。在我之前的文章中我介绍了如何创建一个维基百科文章爬虫它将以文章名称作为输入然后系统地下载所有链接的文章直到达到给定的文章总数或深度。爬虫生成文本文件然后由 WikipediaCorpus 对象进一步处理WikipediaCorpus 对象是在 NLTK 之上自行创建的抽象可以方便地访问单个语料库文件和语料库统计信息例如句子、段落和词汇的数量。在本文中WikipediaCorpus 对象仅用于加载特定文章这些文章作为应用 Sci-Kit 学习预处理方法的示例。 三、基本示例 以下代码片段展示了如何使用 WikipediaCorpus 对象从机器学习和人工智能开始抓取 200 个页面。 reader WikipediaReader(dir articles3) reader.crawl(Artificial Intelligence, total_number 200) reader.crawl(Machine Learning) reader.process() 在此基础上创建语料库对象 corpus WikipediaPlaintextCorpus(articles3) corpus.describe() #{files: 189, paras: 15039, sents: 36497, words: 725081, vocab: 32633, max_words: 16053, time: 4.919918775558472} 最后创建一个 SciKit Learn 管道该管道将对文本进行预处理忽略所有非文本字符和停用词并进行标记化。 pipeline Pipeline([(corpus, WikipediaCorpusTransformer(root_path./articles3)),(preprocess, TextPreprocessor(root_path./articles3)),(tokenizer, TextTokenizer()), ]) 这将生成以下数据框以下各节将在其上应用进一步的处理步骤 四、One-Hot 矢量化器 独热编码是一种稀疏矩阵其中行表示文档列表示词汇表中的单词。每个单元格的值为 0 或 1以指示文档中是否出现单词。 从 SciKit 了解到OneHotEncoder它是处理 Pandas 数据框对象中包含的数据最难获得的方法之一因为它被设计为处理表示为元组的序号数据。因此需要首先将包含预处理令牌的 Pandas 系列对象转换为矩阵并提出将列数填充和修剪到合理值的特殊挑战。帮助程序方法如下 def to_matrix(series, padding_value):matrix []for vec in np.nditer(series.values,flags(refs_ok,)):v vec.tolist()pad [ for i in range(0, padding_value)]matrix.append([*v, *pad][:padding_value])return matrix 下面是应用于人工智能文章时生成的数据结构包括填充的示例 x_t to_matrix(X[tokens], 10000) #[a.i, ., artificial, intelligence, simply, a.i, ., 2001, american, science, #fiction, film, directed, steven, spielberg, ., the, screenplay, spielberg, #screen, story, ian, watson, based, 1969, short, story, supertoys, last, # ... , 以下示例演示如何将 one-hot-encode 应用于填充的令牌列表 from sklearn.preprocessing import OneHotEncodervectorizer OneHotEncoder(handle_unknownignore) x_train vectorizer.fit_transform(np.array(x_t).reshape(-1, 1))print(type(x_train)) #scipy.sparse._csr.csr_matrixprint(x_train) # (0, 7) 1.0 # (1, 8) 1.0 # (2, 87) 1.0 # (3, 64) 1.0 # (4, 5) 1.0 # (5, 80) 1.0 # (6, 42) 1.0print(vectorizer.get_feature_names_out()) # [x0_, x0_. x0_... x0_1948 x0_1953 x0_1968 x0_1972 x0_2001 # x0_a x0_additionally x0_after x0_amazing x0_arthur x0_artwork # x0_background x0_based x0_bbc x0_before x0_both x0_breaking # x0_c. x0_carnon x0_clarke x0_collaboration x0_comet x0_comicsprint(len(vectorizer.get_feature_names_out())) # 34853 编码器生成34853特征并具有用于解码目的的特征名称。 五、计数矢量化器 计数向量化器是一种可定制的 SciKit Learn 预处理器方法。它适用于开箱即用的任何文本并自行应用预处理、标记化和停用词删除。这些任务可以定制例如通过提供不同的标记化方法或停用词列表。 这也适用于所有其他预处理器。将计数向量化器应用于原始文本会创建一个 (document_id, tokens) 形式的矩阵其中值是标记计数。 这种矢量化方法无需任何配置也无需直接对预处理的文本进行任何额外的转换 from sklearn.feature_extraction.text import CountVectorizervectorizer CountVectorizer() x_train vectorizer.fit_transform(X[preprocessed]) 其应用如以下代码片段所示 print(type(x_train)) #scipy.sparse._csr.csr_matrixprint(x_train.toarray()) # [[0 0 0 ... 0 0 0] # [0 7 0 ... 0 0 0] # [0 3 0 ... 0 0 0] # ... # [0 0 0 ... 0 0 0] # [0 1 0 ... 0 0 0] # [0 2 0 ... 0 0 0]]print(vectorizer.get_feature_names_out()) # array([00, 000, 0001, ..., zy, zygomaticus, zygote], # dtypeobject)print(len(vectorizer.get_feature_names_out())) # 32417 此矢量化器可检测32417特征并且还具有可解码的特征名称。 六、Dict 矢量化器 顾名思义它将包含文本的字典对象转换为向量。因此它不能在原始文本中工作而是需要文本的频率编码表示例如词袋表示。 以下帮助程序方法提供标记化文本中的词袋表示形式。 from collections import Counterdef bag_of_words(tokens):return Counter(tokens)X[bow] X[tokens].apply(lambda tokens: bag_of_words(tokens)) 生成的 DataFrame 如下所示 机器学习文章的标题是这样的 X[bow][184] # Counter({,: 418,# .: 314,# learning: 224,# machine: 124,# data: 102,# training: 49,# algorithms: 46,# model: 38,# used: 35,# set: 31,# in: 30,# artificial: 29, 以下代码演示如何将矢量化器应用于额外创建的词袋表示形式。 from sklearn.feature_extraction import DictVectorizervectorizer DictVectorizer(sparseFalse) x_train vectorizer.fit_transform(X[bow])print(type(x_train)) #numpy.ndarrayprint(x_train) #[[ 15. 0. 10. ... 0. 0. 0.] # [662. 0. 430. ... 0. 0. 0.] # [316. 0. 143. ... 0. 0. 0.] # ... # [319. 0. 217. ... 0. 0. 0.] # [158. 0. 147. ... 0. 0. 0.] # [328. 0. 279. ... 0. 0. 0.]]print(vectorizer.get_feature_names_out()) # array([,, ,1, ., ..., zy, zygomaticus, zygote], dtypeobject)print(len(vectorizer.get_feature_names_out())) # 34872 此矢量化器可检测# 34872特征并且还具有可解码的特征名称。 七、TfIdf 矢量化器 术语频率/反向文档频率是信息检索中众所周知的指标。它以这样一种方式对词频进行编码以便对许多文档中出现的常见术语以及仅在少数文档中出现的不常见术语给予同等重视。该指标在大型语料库中具有很好的概括性并改进了查找相关主题的能力。 SciKit Learn 实现可以直接用于已预处理的文本。但请记住其内部步骤如预处理和标记化可以根据需要进行定制。 创建此矢量化器很简单 from sklearn.feature_extraction.text import TfidfVectorizervectorizer TfidfVectorizer() x_train vectorizer.fit_transform(X[preprocessed]) 以下是将矢量化器应用于语料库的结果。 print(type(x_train)) # scipy.sparse._csr.csr_matrixprint(x_train.shape) # (189, 32417)print(x_train) # (0, 9744) 0.09089003669895346 # (0, 24450) 0.0170691375156829 # (0, 6994) 0.07291108016392849 # (0, 6879) 0.05022416293169798 # (0, 10405) 0.08425453878004373 # (0, 716) 0.048914251894790796 # (0, 32066) 0.06299157591377592 # (0, 17926) 0.042703846745948786print(vectorizer.get_feature_names_out()) # array([00 000 0001 ... zy zygomaticus zygote], dtypeobject)print(len(vectorizer.get_feature_names_out())) # 32417 此矢量化器可检测特征并且还具有可解码的特征名称。32417 八、散列矢量化器 最终的预处理器同时是最通用且性能最高的。它创建一个包含 document_id x 标记的结构化矩阵但这些值可以标准化为 L1其值的总和或 L2所有平方向量值之和的平方根。它还有其他好处例如需要较低的内存并适合处理流式文档。 HashingVector 在预处理的文本上按原样工作。 from sklearn.feature_extraction.text import HashingVectorizervectorizer HashingVectorizer(norml1) x_train vectorizer.fit_transform(X[preprocessed]) 它产生以下结果 print(type(x_train)) #scipy.sparse._csr.csr_matrixprint(x_train.shape) #(189, 1048576)print(x_train) # (0, 11631) -0.006666666666666667 # (0, 17471) -0.006666666666666667 # (0, 26634) 0.006666666666666667 # (0, 32006) -0.006666666666666667 # (0, 42855) 0.006666666666666667 # (0, 118432) 0.02666666666666667 # (0, 118637) -0.006666666666666667print(vectorizer.get_params()) #{alternate_sign: True, analyzer: word, binary: False, decode_error: strict, dtype: class numpy.float64, encoding: utf-8, input: content, lowercase: True, n_features: 1048576, ngram_range: (1, 1), norm: l1, preprocessor: None, stop_words: None, strip_accents: None, token_pattern: (?u)\\b\\w\\w\\b, tokenizer: None} 此矢量化器检测文档中的特征。唉它的功能名称无法解码。1048576 九、结论 本文是 SciKit 学习内置文本矢量化方法的深入教程。对于以下每个矢量化器您都看到了一个实际示例以及如何将它们应用于文本one-hot、count、字典、TfIdf、哈希。所有矢量化器都使用默认的文本处理实用程序开箱即用但您可以自定义预处理器、分词器和顶部单词。此外它们可以处理原始文本本身但字典除外它需要文本的词袋表示以及 one-hot 编码器它需要手动将 Pandas 系列转换为带有标记填充的 Numpy 矩阵。 参考资料 塞巴斯蒂安 NLP: Text Vectorization Methods with SciKit Learn | Admantium
http://www.zqtcl.cn/news/306820/

相关文章:

  • 建站知乎做网站销售工资
  • 仙居住房和城乡建设局网站用手机看网站源代码
  • 网架加工厂家seo关键词优化推广报价表
  • 开发新闻类网站门户网站搭建方案
  • 东莞网站搭建建站公司wordpress+链接跳转
  • 福州网站设计软件公司学校网站源码wordpress
  • 网站seo推广优化报价表广州哪个区封了
  • 网站第三方统计代码网页设计图片大小
  • 网上推广网站夸克搜索引擎
  • 什么是网站根目录做动态图片下载哪个网站好
  • 花钱让别人做的网站版权是谁的o2o网站建设如何
  • 电子商务网站建设策划书的流程wordpress原理
  • 微信公众号文章排版设计软媒win7优化大师
  • 长春建设局网站处长做箱包关注哪个网站
  • 中国建筑集团有限公司怎么样seo是怎么优化推广的
  • 芜湖建设网站eclipse开发网站用vue做前端
  • 外贸网站推广制作教程wordpress留言页面模版
  • 手机网站 像素网站建设生意怎么样
  • html5网站源代码凡科互动app下载
  • asp评价网站开发文档福州做网站的哪家好
  • 合肥网站建设方案优化写作网站大全
  • 专门提供做ppt小素材的网站网站定位
  • 临沂市建设局兰山区网站wordpress 去除下划线
  • 如何做一张图片的网站关于实验室建设的英文网站
  • 网站建设文本居中代码山东网站推广营销设计
  • 山东桓台建设招投标网站北京建设信息港网站
  • 为什么网站要域名个人养老金制度最新消息
  • 公众号开发是不是网站开发公司网站建设分录
  • 云南省住房建设厅网站代理二级分销系统
  • 四川建设人才培训网站临沂网站制作页面