非结构话数据到知识图谱

非结构数据-> 信息抽取(命名实体识别、关系抽取)-> 图谱构建(实体消歧、链接预测)-> 图分析算法

一、文本分析关键技术

  • 拼写纠错
  • 分词
  • 词干提取
  • 词的过滤
  • 文本的表示
  • 文本相似度
  • 词向量
  • 句子向量
  • 实体命名识别

二、拼写纠错

input -> correction

天起 -> 天气

theris -> theirs

机器学系 -> 机器学习

找出编辑距离最小的

input                  candidates                  edit distance

therr                     there                               1

thesis                               3

theirs                                2

the                                   2

their                                   1

计算编辑距离:

Given str s, str t => editDist(s,t)

算法原理:

"""代码实现"""def edit_dist(str1,str2):m,n = len(str1),len(str2)dp = [[0 for x in range(n+1)] for x in range(m+1)]for i in range(m+1):for j in range(n+1):if i == 0:  dp[i][j] = jelif j == 0:dp[i][j] = ielif str1[i-1] == str2[j-1]:dp[i][j] = dp[i-1][j-1]else:dp[i][j] = 1 + min(dp[i][j-1], dp[i-1,j-1], dp[i-1][j])return dp[m][n]

根据之前的想法可以抽样为流程:用户输入-> 找出词典库中编辑距离最小的Top K -> 排序

缺点:跟每一个单词都要计算编辑距离-时间复杂度太高

改进后方案:

用户输入->  生成编辑距离1,2的所有可能的字符串-> 通过词典过滤 ->  排序

生成的字符串远小于词典库

P(c)和P(s/c)可以基于统计方法计算出历史出现的概率值

三、分词

在很多语言中,分词是最为重要的第一步,如汉语,一般用jieba分词工具

怎么写一个分词工具?

简单两步骤:语句-> 候选分割(词典DP)-> 选择最好的(语言模型)

缺点:时间效率低、误差传递

改进:分割 + 语言模型  ->Joint optimization

"""jieba分词"""import jiebaseg_list = jieba.cut("小王专注于人工智能",cut_all=False)print(" ".join(seg_list))"""增加词典"""
jieba.add_word("小王专注")

四、词的过滤

通常先把停用词、出现频率很低的词汇过滤掉

好处:提高准确率、减少时间成本

停用词(stop words)

英文中 比如 "the" "an" "their" 都可以作为停用词来处理。但是也需要考虑应用场景

出现频率特别低的词汇对分析作用不大,所以一般也会去掉。把停用词、出现频率低的过滤掉。

五、Stemming (单词转换)

意思相似,合并为同一单词

went,go,going

fly,flies

fast,faster,fastest

stemming 算法合并

from nltk.stem.porter import PorterStemmerstemmer = PorterStemmer()test_strs = ['caresses','dies','flies','mules','denied',
'died','agreed','owned','humbled','sized','meeting','stating']singles = [stemmer.stem(word) for word in test_strs]print(' '.join(singles))

六、文本表示

单词的表示:最常用的表示方式:词袋模型(Bag-of-words Model)

假设一个词典有7个单词:[我们,去,爬山,今天,你们,昨天,运动]

每个单词的表示:特点- 维度等同于词典的大小,Sparse Vector(只有一个1,其它全是0)

我们:[1,0,0,0,0,0,0]

爬山:[0,0,1,0,0,0,0]

运动:[0,0,0,0,0,0,1]

昨天:[0,0,0,0,0,1,0]

词袋模型(词典维度)

句子的表示方式:

corpus = [

'He is going from Beijing to Shanghai.',

'He denied my request, but he actually lied.',

'Mike lost the phone, and phone was in the car.',

]

[[0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0]

[1 0 0 1 0 1 0 0 2 0 0 1 0 0 1 0 1 0 0 0 0]

[0 1 0 0 1 0 0 0 0 1 0 0 1 1 0 2 0 0 2 0 1]]

tf-idf 表达方式

tf-idf(w) = tf(d,w) * idf(w)

"""文本转化向量"""corpus = ['He is going from Beijing to Shanghai.','He denied my request, but he actually lied.','Mike lost the phone, and phone was in the car.',]# 方法1: 只考虑词频
from sklearn.feature_extraction.text import CountVectorizervectorizer = CountVectorizer()X = vectorizer.fit_transform(corpus)print(X)
print(x.toArray())# 方法2: 既考虑词频,也考虑词的重要性(tf-idf)from sklearn.feature_extraction.text import TfidfVectorizervectorizer = TfidfVectorizer()X = vectorizer.fit_transform(corpus)print(X.toArray())

计算句子相关性? 方法:d = (s1*s2)/|s1|*|s2|(余弦相似度)

我们:[0.1,0.2,0.4,0.2]

爬山:[0.2,0.3,0.7,0.1]

运动:[0.2,0.3,0.6,0.2]

昨天:[0.5,0.9,0.1,0.3]

分布式表示(优点:1、维度小  2、每个位置都是具有一定意义的浮点非0的数)

dist(我们,爬山) = sqrt(0.12)

dist(爬山,运动) = sqrt(0.02)

因此,爬山和运动的相似度高于我们和爬山

分布式表示依赖深度学习模型(word2vec模型 i,e.SkipGram)

句子向量:我们| 昨天|爬山 = () 方法:1、每个维度平均  2、时序(LSTM,RNN)

知识图谱学习笔记-非结构化数据处理相关推荐

  1. AI非结构化数据处理和分析软件公司Zilliz宣布完成4300万美元B轮融资

    "数据猿年度重磅活动预告:2020年度金猿策划活动(金猿榜单发布+金猿奖杯颁发+2.0版产业图谱+落地颁奖大会)即将推出,敬请咨询期待! 数据猿发布产业全景图--2020中国数据智能产业图谱 ...

  2. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  3. 非结构化数据处理方案

    非结构化数据&结构化处理方案 一. 非结构化数据处理需求    企业拥有的非结构化数据增长迅速.非结构化数据是计算机或人生成的信息,其中的数据并不一定遵循标准的数据结构(如模式定义规范的行和列 ...

  4. 知识图谱学习笔记八(知识问答)

    知识问答 知识问答是一个拟人化的智能系统,接收使用自然语言表达的问题,理解用户的意图,获取相关的知识,通过推理计算形成相应的答案并反馈给用户. 知识问答的基本要素 1.问题,也就是问答系统的输入.(问 ...

  5. 知识图谱学习笔记四(知识抽取与挖掘)

    知识抽取任务以及相关竞赛    知识抽取基本定义 实现自动化构建大规模知识图谱的重要技术.目的在于从不同来源.不同结构的数据中进行知识提取并存储在知识图谱中.    知识抽取子任务 命名实体识别(如: ...

  6. 知识图谱学习笔记(一)——知识图谱基础

    知识图谱基础 一.知识图谱的基本概念 知识库是一个有向图,包含: 多关系数据(multi-relational data) 节点:实体/概念 边:关系/属性 关系事实=(head, relation, ...

  7. 知识图谱学习笔记——(四)知识图谱的抽取与构建

    一.知识学习 声明:知识学习中本文主体按照浙江大学陈华钧教授的<知识图谱>公开课讲义进行介绍,并个别地方加入了自己的注释和思考,希望大家尊重陈华钧教授的知识产权,在使用时加上出处.感谢陈华 ...

  8. 知识图谱学习笔记02-经典的知识图谱项目介绍

    CYC Cyc是一个知识库系统,由Douglas Lenat于1984年开始创建.其最初目标是建立人类最大的常识知识库,其中包含了典型的常识知识,例如"每棵树都是一种植物"和&qu ...

  9. 知识图谱学习笔记——(二)知识图谱的表示

    一.知识学习 声明:知识学习中本文主体按照浙江大学陈华钧教授的<知识图谱>公开课讲义进行介绍,并个别地方加入了自己的注释和思考,希望大家尊重陈华钧教授的知识产权,在使用时加上出处.感谢陈华 ...

最新文章

  1. 编写高性能Java代码的最佳实践
  2. 最长公共上升子序列 LCIS
  3. flutter TextField 输入框被软键盘挡住的解决方案
  4. 【MATLAB】三维图形绘制 ( 绘制网格 + 等高线 | meshc 函数 | 绘制平面 + 等高线 | surfc 函数 )
  5. Cacti 插件中setup.php 文件的编写
  6. HTML-CSS- JavaScript——网页三剑客
  7. ebm风扇选型手册_德国EBM离心风扇的八大结构组成你知道吗?
  8. c++日志文件中文显示乱码的问题及解决办法
  9. Java应用性能调优工具介绍及实践
  10. CSS3 多列布局列的填充方式column-fill属性
  11. Python实战从入门到精通第四讲——数据结构与算法2之实现一个优先级队列
  12. 基于MUI制作手机社交app通讯录列表页面源码
  13. 排序算法-归并排序详细讲解(MergeSort)
  14. 简述计算机网络的五层协议体系结构,计算机网络五层协议体系结构分别是什么...
  15. C语言实现求两个数的和
  16. 第一行代码中过时的通知写法更正;
  17. win7共享中心服务器运行失败,win7网络共享中心打不开怎么办
  18. 回车、换行、空格的ASCII码值
  19. 武汉最新测绘资质复审、换证所需资料及证书有效期
  20. asyncio中的call_soon、call_later、call_at、call_soon_threadsafe方法

热门文章

  1. 中缀转后缀表达式并求值
  2. 虚拟机与系统文件互传(VMware Tools)的使用
  3. 台积电和三星成半导体代工厂恶战主角 受谁影响?
  4. DFiddler:A HTTP Packets Listener一个简易版的手机端的Fiddler。
  5. Ubuntu使用ssh公钥实现免密码登录
  6. GWT更改元素样式属性
  7. EMOS SPF开启收不到信 及WEB收件箱不显示邮件列表等问题解决处理记录
  8. OSPF多区域配置与汇总
  9. 游戏外挂设计技术探讨
  10. 裁员纪实——联想不是我的家(转帖)