• 用python实现入门级NLP


    本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库。

    什么是NLP

    简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服务。

    这里讨论一些自然语言处理(NLP)的实际应用例子,如语音识别、语音翻译、理解完整的句子、理解匹配词的同义词,以及生成语法正确完整句子和段落。

    这并不是NLP能做的所有事情。

    NLP实现

    搜索引擎: 比如谷歌,Yahoo等。谷歌搜索引擎知道你是一个技术人员,所以它显示与技术相关的结果;

    社交网站推送:比如Facebook News Feed。如果News Feed算法知道你的兴趣是自然语言处理,就会显示相关的广告和帖子。

    语音引擎:比如Apple的Siri。

    垃圾邮件过滤:如谷歌垃圾邮件过滤器。和普通垃圾邮件过滤不同,它通过了解邮件内容里面的的深层意义,来判断是不是垃圾邮件。

    NLP库

    下面是一些开源的自然语言处理库(NLP):

    • Natural language toolkit (NLTK);
    • Apache OpenNLP;
    • Stanford NLP suite;
    • Gate NLP library

    其中自然语言工具包(NLTK)是最受欢迎的自然语言处理库(NLP),它是用Python编写的,而且背后有非常强大的社区支持。

    NLTK也很容易上手,实际上,它是最简单的自然语言处理(NLP)库。

    在这个NLP教程中,我们将使用Python NLTK库。

    安装 NLTK

    如果您使用的是Windows/Linux/Mac,您可以使用pip安装NLTK:

    1

    pip install nltk

      

    打开python终端导入NLTK检查NLTK是否正确安装:

    1

    import nltk

    如果一切顺利,这意味着您已经成功地安装了NLTK库。首次安装了NLTK,需要通过运行以下代码来安装NLTK扩展包:

    1

    2

    3

    import nltk

      

    nltk.download()

    这将弹出NLTK 下载窗口来选择需要安装哪些包:

    您可以安装所有的包,因为它们的大小都很小,所以没有什么问题。

    使用Python Tokenize文本

    首先,我们将抓取一个web页面内容,然后分析文本了解页面的内容。

    我们将使用urllib模块来抓取web页面:

    1

    2

    3

    4

    5

    import urllib.request

      

    response = urllib.request.urlopen('http://php.net/')

    html = response.read()

    print (html)

    从打印结果中可以看到,结果包含许多需要清理的HTML标签。
    然后BeautifulSoup模块来清洗这样的文字:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    from bs4 import BeautifulSoup

      

    import urllib.request

    response = urllib.request.urlopen('http://php.net/')

    html = response.read()

    soup = BeautifulSoup(html,"html5lib")

    # 这需要安装html5lib模块

    text = soup.get_text(strip=True)

    print (text)

      

    现在我们从抓取的网页中得到了一个干净的文本。
    下一步,将文本转换为tokens,像这样:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    from bs4 import BeautifulSoup

    import urllib.request

      

    response = urllib.request.urlopen('http://php.net/')

    html = response.read()

    soup = BeautifulSoup(html,"html5lib")

    text = soup.get_text(strip=True)

    tokens = text.split()

    print (tokens)

    统计词频

    text已经处理完毕了,现在使用Python NLTK统计token的频率分布。

    可以通过调用NLTK中的FreqDist()方法实现:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    from bs4 import BeautifulSoup

    import urllib.request

    import nltk

      

    response = urllib.request.urlopen('http://php.net/')

    html = response.read()

    soup = BeautifulSoup(html,"html5lib")

    text = soup.get_text(strip=True)

    tokens = text.split()

    freq = nltk.FreqDist(tokens)

    for key,val in freq.items():

        print (str(key) + ':' + str(val))

    如果搜索输出结果,可以发现最常见的token是PHP。
    您可以调用plot

  • 相关阅读:
    Podman - 以 rootless 方式运行 podman
    Delay Penalty for RNN-T and CTC
    说下你对TCP以及TCP三次握手四次挥手的理解?
    python socket编程1 - socket创建参数说明及参考规范
    Django路由层解析
    数据结构:AVL树的旋转(高度平衡树)
    Pytorch多GPU条件下DDP集群分布训练实现(简述-从无到有)
    Redis 最佳解析
    VxWroks I2C Drivers 文档
    springboot一次性定时任务插入1000万条数据
  • 原文地址:https://blog.csdn.net/m0_59485658/article/details/128152369