热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【自然语言处理】——(1)WhatisNLP?

NLP的概念NLP发展历程编程语言与自然语言NLP实际应用NLP技术要点结巴分词TF-IDF相似度计算NLP相关开源APINLP技术难点总结方法论之争和前景Naturallangu
  • NLP的概念
  • NLP发展历程
  • 编程语言与自然语言
  • NLP实际应用
  • NLP技术要点
  • 结巴分词
  • TF-IDF
  • 相似度计算
  • NLP相关开源API
  • NLP技术难点总结
  • 方法论之争和前景

 

Natural language processing (NLP) is a subfield of computer science,information engineering, and artificial intelligence concerned with the interactions between computers and human (natural) languages,in particular how to program computers to process and analyze large amounts of natural language data.Challenges in natural language processing frequently involve speech recognition, natural language understanding, and natural language generation.

自然语言处理是一门研究人与人交际中,以及人与计算机交际中的语言问题的学科。NLP的目标是希望通过图灵测试,包括了语音、形态、语法、语义以及语用等方面,也要解决人类语言中的因果、逻辑和推理的问题。

NLP=NLU(Natural Language Understanding)+NLG(Natural Language Generation)

  • NLU:语音/文本—>意思
  • NLG:意思—>文本/语音

 

NLP的历史:

20世纪50年代起步--机器翻译   

 利用计算机自动地将一种自然语言翻译为另外一种自然语言  

  “I like Beijing Tiananmen Square”   ====》“我爱北京天安门”

 “我爱北京天安门” ====》“I like Beijing Tiananmen Square”

50-70年代—模式匹配

例如计算机答疑系统

用户输入——题库查找答案 ——返回结果

缺点:用户输入的信息,题库中没有匹配出来,就没有答案

改进:增加同义词、反义词等等

缺点:效率低,不灵活

90年代至今—基于统计

有一定时代背景,互联网的发展提供海量的自然语言供研究应(社 交对话、邮件、文章等等),方便学者和研究人员基于大量语料基 础之上构建自然语言处模型 又称“经验主义”语言模型,使用大规模真实语料库训练,得出结 果,避开一些歧义、语境等导致的技术难题

NLP的发展趋势:基于规则——>基于统计

自然语言中词的多义性很难用规则来描述,而是严重依赖于上下文, 语境,甚至是常识,基于统计理论避开了一些技术难题。

 

NLP技术难点:

Why NLP is Harder(i.e. than Computer Vision)?为什么自然语言处理要比计算机视觉要难一些呢?

  1. The Challenge:Multiple Ways to Express(多种表达方式)
  2. The Challenge:Ambiguity(一词多义)

Solving Ambiguity:Learning From Data(语义处理相对比较难,需要联系上下文,语境,还有一些情感色彩,这是自然语言处理中的难点)

自然语言处理的过程中会遇到语义,歧义和多义等问题。
例如:“我们把香蕉给猴子,因为它们饿了。”和“我们把香蕉给猴子,因为它们熟透了。”第一句中指的是“猴子”,第二句指的是“香蕉”,如果不了解猴子和香蕉的属性,无法区分“它们”指的是谁。这是语义问题。
切词中的歧义,即由字到词时的现象,是中文信息处理中独有的。又有组合型歧义和交集型歧义。例如:从马上跳下来(从 马 上 跳 下来),他将来我校讲学(他 将 来 我校 讲学)这是组合型歧义。使用户满意(使用 户 满意),研究生命的起源(研究生 命 的 起源),这是交集型歧义,组合型歧义出现的概率低,消解更为困难。

 

NLP案例:

Today's Case Study:Machine Translation

如果现在搭建一个机器翻译系统,该如何实现呢?

根据下面12句话,进行翻译

根据语料进行统计,单词匹配。

jjat arrat vat mat hilat oloat at-yurp

这样的翻译系统缺点:速度慢、语义解决不了、上下文没有考虑到,语法不对。

 

 

 

NLP实际应用

Question Answering(问答系统)

Sentiment Analysis(情感分析)【股票价格预测、舆情监控、产品评论、事件监测】

输入语句==》特征工程==》模型==》情感值

输入语句====》深度学习模型====》情感值

Machine Translation(机器翻译)

Text Summarization(自动摘要)

Chatbot(聊天机器人)

Information Extraction(信息抽取)

 

NLP技术要点

自然语言处理技术四个维度:

Semantic(语义)

Syntax(句子结构)

Morphology(单词)

Phonetics(声音)

 

Word Segmentation(分词)

Part-Of-Speech(词性)

Named Entity Recognition(命名实体识别)

Parsing(句法分析)

Dependency Parsing(依存分析)

Relation Extraction(关系抽取)

 

 

 

 

 

 

本文为自己学习过程当中的笔记,编写过程参考多篇文章和其他资料,如有侵权,请联系删除。


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
author-avatar
jianji
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有