zoukankan      html  css  js  c++  java
  • 安装torchtext

    torchtext使用教程

    主要内容:

    • 如何使用torchtext建立语料库
    • 如何使用torchtext将词转下标,下标转词,词转词向量
    • 如何建立相应的迭代器

    torchtext组件流程:

    • 定义Field:声明如何处理数据,主要包含以下数据预处理的配置信息,比如指定分词方法,是否转成小写,起始字符,结束字符,补全字符以及词典等等
    • 定义Dataset:用于得到数据集,继承自pytorch的Dataset。此时数据集里每一个样本是一个 经过 Field声明的预处理 预处理后的 wordlist
    • 建立vocab:在这一步建立词汇表,词向量(word embeddings)
    • 构造迭代器Iterator:: 主要是数据输出的模型的迭代器。构造迭代器,支持batch定制用来分批次训练模型。
    (deeplearning) C:UsersWQBin>conda search  torchtext
    Loading channels: done
    # Name                       Version           Build  Channel
    torchtext                      0.4.0    pyhb384e40_1  anaconda/cloud/pytorch
    torchtext                      0.5.0            py_1  anaconda/cloud/pytorch
    
    (deeplearning) C:UsersWQBin>conda install  torchtext
    Collecting package metadata (current_repodata.json): done
    Solving environment: done

    SentencePiece

    https://pypi.org/project/sentencepiece/

     SentencePiece是一个google开源的自然语言处理工具包。网上是这么描述它的:数据驱动、跨语言、高性能、轻量级——面向神经网络文本生成系统的无监督文本词条化工具。

     那么它究竟是干什么的呢?先举个例子:假设在数据挖掘时,有一列特征T是文本描述,我们需要将其转成枚举型,或者多个布尔型代入模型,即:需要从文本中提供信息构造新特征。

     首先,我们可以用标点将长句长分成短句,以短句作为关键词,看每个实例的特征T中是否包含该关键词,从而构造新的布尔型特征。但有时候表达同一个意思所使用的文本并不完全一致,比如“买三送一”和“买三送一啦!”是一个意思。

     此时,我们可以用SnowNLP或者jieba分词把描述拆成单个词,看T是否包括该关键词。但这样用也有一个问题:可能把一个意思拆成了多个特征,比如“袖子较短,领子较大”被拆成了四个独立的特征“袖子”“较短”“领子”“较大”,组合效果没有了。

     我们想要的效果是:如果“袖子较短”这个组合经常出现,就把它当成一个词处理。jieba中可以用自定义词典的方式加入已知的词。

     还有一些组合常常出现,但事先并不知道,于是我们想让机器自动学习经常组合出现的短语和词。SentencePiece就是来解决这个问题的。它需要大量文本来训练。

     SentencePiece的用途不限于自然语言处理,记得DC之前有一个药物分子筛选的比赛,蛋白质的一级结构是氨基酸序列,需要研究氨基酸序列片断,片断的长度又是不固定的,此处就可以用SentencePiece进行切分。

       原理是重复出现次数多的片断,就认为是一个意群(词)。

       SentencePiece分为两部分:训练模型和使用模型,训练模型部分是用C语言实现的,可编成二进程程序执行,训练结果是生成一个model和一个词典文件。

     模型使用部分同时支持二进制程序和Python调用两种方式,训练完生成的词典数据是明文,可编辑,因此也可以用任何语言读取和使用。、

    conda 是没有的,需要使用pip安装

    (deeplearning) C:UsersWQBin>pip install sentencepiece
    Collecting sentencepiece
      Downloading https://files.pythonhosted.org/packages/61/c5/e7e2f45c076097ac1a58b21288be25ae4eb4044be899e6c04cd897a00f15/sentencepiece-0.1.85-cp37-cp37m-win_amd64.whl (1.2MB)
         |████████████████████████████████| 1.2MB 547kB/s
    Installing collected packages: sentencepiece
    Successfully installed sentencepiece-0.1.85
    安装完还是报错:
    ModuleNotFoundError: No module named 'spacy'

    Can't find model 'en'

    安装完'spacy'有报错如下:

    Can't find model 'en'.  It doesn't seem to be a shortcut link, a Python package or a valid

    报错信息:Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid

    错误描述:在CMD命令框中安装了spacy以及安装了''en"模块,但是在Pycharm中报错,说找不到

    解决办法:在普通命令框中输入''en"模块安装命令python -m spacy download en,会显示权限不够,但是仍然显示link successful ,但是在Pycharm中依然报错。

    Installing collected packages: en-core-web-sm
    Successfully installed en-core-web-sm-2.2.5
    ✔ Download and installation successful
    You can now load the model via spacy.load('en_core_web_sm')
    你没有足够的权限执行此操作。
    ✘ Couldn't link model to 'en'
    Creating a symlink in spacy/data failed. Make sure you have the required
    permissions and try re-running the command as admin, or use a virtualenv. You
    can still import the model as a module and call its load() method, or create the
    symlink manually.

    所以,用管理员身份打开【Anaconda Prompt (Anaconda3)】,在输入同样的命令,问题解决。

    ✔ Download and installation successful
    You can now load the model via spacy.load('en_core_web_sm')
    为 D:appAnaconda3envsdeeplearninglibsite-packagesspacydataen <<===>> D:appAnaconda3envsdeeplearninglibsite-packagesen_core_web_sm 创建的符号链接
    ✔ Linking successful
    D:appAnaconda3envsdeeplearninglibsite-packagesen_core_web_sm -->
    D:appAnaconda3envsdeeplearninglibsite-packagesspacydataen
    You can now load the model via spacy.load('en')

    完结!!




  • 相关阅读:
    把ssl模块加入到已经编译好的apache中实现HTTPS
    六,集合
    一. 计算机语言基础知识:
    三, 字符串
    四,列表的使用方法
    hash()函数的用法
    五,字典用法总结
    十,编码
    七八九,条件和循环语句
    二.Python的基础语法知识
  • 原文地址:https://www.cnblogs.com/wqbin/p/12690005.html
Copyright © 2011-2022 走看看