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

上海最专业的网站设计制中山做网站价格

上海最专业的网站设计制,中山做网站价格,百度一下网页,广州seo外包公司一、说明 我的NLP项目在维基百科条目上下载、处理和应用机器学习算法。相关上一篇文章中#xff0c;展示了项目大纲#xff0c;并建立了它的基础。首先#xff0c;一个 Wikipedia 爬网程序对象#xff0c;它按名称搜索文章#xff0c;提取标题、类别、内容和相关页面… 一、说明         我的NLP项目在维基百科条目上下载、处理和应用机器学习算法。相关上一篇文章中展示了项目大纲并建立了它的基础。首先一个 Wikipedia 爬网程序对象它按名称搜索文章提取标题、类别、内容和相关页面并将文章存储为纯文本文件。其次一个语料库对象它处理完整的文章集允许方便地访问单个文件并提供全局数据如单个令牌的数量。 二、背景介绍         在本文中我将继续展示如何创建一个NLP项目以从其机器学习领域对不同的维基百科文章进行分类。你将了解如何创建自定义 SciKit Learn 管道该管道使用 NLTK 进行标记化、词干提取和矢量化然后应用贝叶斯模型来应用分类。所有代码也可以在Jupyter Notebook中看到。         本文的技术背景是 Python v3.11 和几个附加库最重要的是 pandas v2.0.1、scikit-learn v1.2.2 和 nltk v3.8.1。所有示例也应该适用于较新的版本。 2.1 需求和使用的 Python 库         请务必阅读并运行上一篇文章的要求以便有一个 Jupyter 笔记本来运行所有代码示例。         对于本文需要以下库这些步骤中的每一个都将成为管道对象的一部分管道对象是读取、预处理、矢量化和聚类文本的顺序过程。我们将在此项目中使用以下 Python 库和对象 pandas DataFrame用于存储文本、标记和矢量的对象 sk-learn Pipeline对象实现处理步骤链BaseEstimator并生成表示管道步骤的自定义类TransformerMixin NLTK PlaintextCorpusReader 用于可遍历对象可访问文档、提供标记化方法并计算有关所有文件的统计信息sent_tokenizer 和 word_tokenizer 用于生成令牌减少标记的stopword列表 2.2 SciKit Learn Pipeline         为了便于获得一致的结果和轻松定制SciKit Learn 提供了 Pipeline 对象。该对象是一系列转换器、实现拟合fit和transform变换方法的对象以及实现拟合fit方法的最终估计器。执行管道对象意味着调用每个转换器来修改数据然后将最终的估计器机器学习算法应用于此数据。管道对象公开其参数以便可以更改超参数甚至可以跳过整个管道步骤。          我们将使用此概念来构建一个管道该管道开始创建语料库对象然后预处理文本然后提供矢量化最后提供聚类或分类算法。为了突出本文的范围我将在下一篇文章中仅解释转换器步骤并接近聚类和分类。 三、管道准备         让我们从大局开始。最终的管道对象将按如下方式实现 pipeline Pipeline([(corpus, WikipediaCorpus()),(preprocess, TextPreprocessor()),(tokenizer, Tokenizer()),(encoder, OneHotEncoder()) ])         然后此管道从一个空的 Pandas 数据帧对象开始随后将数据添加到该对象即我们实现如下所示的数据帧对象         对于上述每个步骤我们将使用自定义类该类从推荐的 ScitKit Learn 基类继承方法。 from sklearn.base import BaseEstimator, TransformerMixin from nltk.tokenize import sent_tokenize, word_tokenizeclass SciKitTransformer(BaseEstimator, TransformerMixin):def fit(self, XNone, yNone):return selfdef transform(self, XNone):return self 让我们开始实现。 3.1 管道步骤 1创建语料库         第一步是重用上一篇文章中解释的 Wikipedia 语料库对象并将其包装在基类中并提供两个 DataFrame 列 title 和 raw。在标题列中我们存储除 .txt 扩展名之外的文件名。在原始列中我们存储文件的完整内容。         此转换使用列表推导式和 NLTK 语料库读取器的内置方法。 class WikipediaCorpus(PlaintextCorpusReader):def __init__(self, root_path):PlaintextCorpusReader.__init__(self, root_path, r.*)class WikipediaCorpus(SciKitTransformer):def __init__(self, root_path):self.root_path root_pathself.corpus WikipediaReader(self.root_path)def transform(self, XNone):X pd.DataFrame().from_dict({title: [filename.replace(.txt, ) for filename in self.corpus.fileids()],raw: [self.corpus.raw(doc) for doc in corpus.fileids()]})return X 3.2 管道步骤 2文本预处理         在 NLP 应用程序中通常会检查原始文本中不需要的符号或者可以删除的停用词甚至应用词干提取和词形还原。         对于维基百科的文章我决定将文本分成句子和标记而不是标记转换最后将它们重新组合在一起。转换如下 删除所有停用词删除所有非ASCII字母非数字标记仅保留 .以及用于序列分隔,;.使用单个空格删除所有出现的多个空格         这是 TextPreprocessor 的完整实现。 DataFrame 对象使用 Pandas apply 方法预处理的新列进行扩展。  class TextPreprocessor(SciKitTransformer):def __init__(self, root_path):self.root_path root_pathself.corpus WikipediaReader(self.root_path)self.tokenizer word_tokenizedef preprocess(self, text):preprocessed for sent in sent_tokenize(text):if not len(sent) 3:text .join([word for word in word_tokenize(sent) if not word in stopwords.words(english)])text re.sub([^A-Za-z0-9,;\.], , text)text re.sub(r\s, , text)# preserve text tokenstext re.sub(r\s\., ., text)text re.sub(r\s,, ,, text)text re.sub(r\s;, ;, text)# remove all non character, non number charspreprocessed text.strip()return preprocesseddef transform(self, X):X[preprocessed] X[raw].apply(lambda text: self.preprocess(text))return X 3.3 管道步骤 3-标记化         现在使用与之前相同的 NLT word_tokenizer 对预处理后的文本进行再次标记化但可以使用不同的标记化器实现进行交换。         和以前一样通过在预处理列上使用 apply 来扩展 DataFrame添加一个新列 tokens。 class TextTokenizer(SciKitTransformer):def preprocess(self, text):return [token.lower() for token in word_tokenize(text)]def transform(self, X):X[tokens] X[preprocessed].apply(lambda text: self.preprocess(text))return X 3.4 管道步骤 4编码器         对标记化文本进行编码是矢量化的先导。为了使本文保持重点我将提供一种相当简单的编码方法该方法计算所有文本的完整词汇表并对特定文章中出现的所有单词进行独热编码。词汇表的基础是错误的我使用精炼标记列表作为输入但也可以使用NLTK-CorpusReader对象中的vocab方法。 class OneHotEncoder(SciKitTransformer):def encode(self, token_series, tokens):one_hot {}for _, token_list in token_series.items():for token in token_list:one_hot[token] 0for token in tokens:one_hot[token] 1return one_hotdef transform(self, X):token_list X[tokens]X[one-hot-encoding] X[tokens].apply(lambda tokens: self.encode(token_list, tokens))return X         这种编码非常昂贵因为每次运行的完整词汇表都是从头开始构建的——这可以在未来的版本中改进。 四、完整的源代码         以下是完整的示例 import numpy as np import pandas as pdfrom nltk.tokenize import sent_tokenize, word_tokenize from nltk.corpus import stopwords from sklearn.base import TransformerMixin from sklearn.pipeline import Pipeline from nltk.corpus.reader.plaintext import CategorizedPlaintextCorpusReader from nltk.tokenize.stanford import StanfordTokenizerclass WikipediaPlaintextCorpus(PlaintextCorpusReader):def __init__(self, root_path):PlaintextCorpusReader.__init__(self, root_path, r.*)class SciKitTransformer(BaseEstimator, TransformerMixin):def fit(self, XNone, yNone):return selfdef transform(self, XNone):return selfclass WikipediaCorpus(SciKitTransformer):def __init__(self, root_path):self.root_path root_pathself.wiki_corpus WikipediaPlaintextCorpus(self.root_path)def transform(self, XNone):X pd.DataFrame().from_dict({title: [filename.replace(.txt, ) for filename in self.wiki_corpus.fileids()],raw: [self.wiki_corpus.raw(doc) for doc in corpus.fileids()]})return Xclass TextPreprocessor(SciKitTransformer):def __init__(self, root_path):self.root_path root_pathself.corpus WikipediaPlaintextCorpus(self.root_path)def preprocess(self, text):preprocessed for sent in sent_tokenize(text):text .join([word for word in word_tokenize(sent) if not word in stopwords.words(english)])text re.sub([^A-Za-z0-9,;\.], , text)text re.sub(r\s, , text)# preserve text tokenstext re.sub(r\s\., ., text)text re.sub(r\s,, ,, text)text re.sub(r\s;, ;, text)# remove all non character, non number charspreprocessed text.strip()return preprocesseddef transform(self, X):X[preprocessed] X[raw].apply(lambda text: self.preprocess(text))return Xclass TextTokenizer(SciKitTransformer):def preprocess(self, text):return [token.lower() for token in word_tokenize(text)]def transform(self, X):X[tokens] X[preprocessed].apply(lambda text: self.preprocess(text))return Xclass OneHotEncoder(SciKitTransformer):def encode(self, token_series, tokens):one_hot {}for _, token_list in token_series.items():for token in token_list:one_hot[token] 0for token in tokens:one_hot[token] 1return one_hotdef transform(self, X):token_list X[tokens]X[one-hot-encoding] X[tokens].apply(lambda tokens: self.encode(token_list, tokens))return Xcorpus WikipediaPlaintextCorpus(articles2) pipeline Pipeline([(corpus, WikipediaCorpus(root_path./articles2)),(preprocess, TextPreprocessor(root_path./articles2)),(tokenizer, TextTokenizer()),(encoder, OneHotEncoder()) ]) 管道对象在 Jupyter 笔记本中呈现如下 五、结论                SciKit Learn Pipeline 对象提供了一种将多个转换和机器学习模型堆叠在一起的便捷方法。所有相关的超参数都可以公开并配置以获得可重复的结果。在本文中您学习了如何通过四个步骤为 Wikipedia 文章创建文本处理管道a) WikipediaCorpus 用于访问纯文本文件和全局统计信息例如单词出现次数b) TextPreprocessor 用于从文本中删除符号和停用词c) TextTokenizer从预处理的文本创建标记d) OneHotEncoder 提供简单的统计总语料库词汇中的单词出现在特定文章中。下一篇文章将继续如何将标记和编码转换为数值向量表示。 参考资料塞巴斯蒂安 自然语言处理 蟒 Nltk
http://www.zqtcl.cn/news/223919/

相关文章:

  • 做平台销售网站上海市普陀区建设规划局网站
  • 网站的积分系统怎么做电影在线观看
  • 成都网站建设方案服务旅游网站建设报价单
  • 京东网址seo排名查询工具
  • 南京制作网站速成班外贸营销信模板
  • 简单网站建设规划方案物联网网站设计
  • 做360网站官网还是百度四川平台网站建设方案
  • 做网站的主题有哪些精品课程网站建设情况
  • 帝国网站开发电商平台搭建
  • 建设工程网站tcwordpress 标题入库
  • 网站开发简直广州网站制作后缀
  • 上海短视频seo优化网站wordpress 构建知识库
  • 做的网站图片不显示2018做网站赚钱不
  • 国内建站平台网站建设是什么科目
  • 响应式个人网站psd建设银行网站联系电话
  • 大型网站开发实战品牌网站建设费用要多少
  • 昆山网站建设昆山html5制作手机端页面
  • 做网站的国标有哪些达州网络推广
  • 站内seo和站外seo区别wordpress演示数据
  • 建设旅游网站财务分析创意设计公司网站
  • 张家港网站优化wordpress调用图片上传
  • 做网站要商标吗房产网站 设计方案
  • 做网站的费用怎么做账客户案例 网站建设
  • 怎么查询网站的备案号城乡建设杂志网站
  • 婚恋网站哪家做的最好北斗导航2022最新版手机版
  • 别墅效果图网站重庆金融公司网站建设
  • 中兴能源建设有限公司网站企业营销策划及推广
  • 外贸英文网站制作WordPress对接微信公众号
  • 推广网站建设花费得多少钱哪些平台可以发布软文
  • wordpress网站检测购物app大全