知识图谱学习笔记-非结构化数据处理
非结构话数据到知识图谱
非结构数据-> 信息抽取(命名实体识别、关系抽取)-> 图谱构建(实体消歧、链接预测)-> 图分析算法
一、文本分析关键技术
- 拼写纠错
- 分词
- 词干提取
- 词的过滤
- 文本的表示
- 文本相似度
- 词向量
- 句子向量
- 实体命名识别
二、拼写纠错
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)
知识图谱学习笔记-非结构化数据处理相关推荐
- AI非结构化数据处理和分析软件公司Zilliz宣布完成4300万美元B轮融资
"数据猿年度重磅活动预告:2020年度金猿策划活动(金猿榜单发布+金猿奖杯颁发+2.0版产业图谱+落地颁奖大会)即将推出,敬请咨询期待! 数据猿发布产业全景图--2020中国数据智能产业图谱 ...
- 知识图谱学习笔记(1)
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...
- 非结构化数据处理方案
非结构化数据&结构化处理方案 一. 非结构化数据处理需求 企业拥有的非结构化数据增长迅速.非结构化数据是计算机或人生成的信息,其中的数据并不一定遵循标准的数据结构(如模式定义规范的行和列 ...
- 知识图谱学习笔记八(知识问答)
知识问答 知识问答是一个拟人化的智能系统,接收使用自然语言表达的问题,理解用户的意图,获取相关的知识,通过推理计算形成相应的答案并反馈给用户. 知识问答的基本要素 1.问题,也就是问答系统的输入.(问 ...
- 知识图谱学习笔记四(知识抽取与挖掘)
知识抽取任务以及相关竞赛 知识抽取基本定义 实现自动化构建大规模知识图谱的重要技术.目的在于从不同来源.不同结构的数据中进行知识提取并存储在知识图谱中. 知识抽取子任务 命名实体识别(如: ...
- 知识图谱学习笔记(一)——知识图谱基础
知识图谱基础 一.知识图谱的基本概念 知识库是一个有向图,包含: 多关系数据(multi-relational data) 节点:实体/概念 边:关系/属性 关系事实=(head, relation, ...
- 知识图谱学习笔记——(四)知识图谱的抽取与构建
一.知识学习 声明:知识学习中本文主体按照浙江大学陈华钧教授的<知识图谱>公开课讲义进行介绍,并个别地方加入了自己的注释和思考,希望大家尊重陈华钧教授的知识产权,在使用时加上出处.感谢陈华 ...
- 知识图谱学习笔记02-经典的知识图谱项目介绍
CYC Cyc是一个知识库系统,由Douglas Lenat于1984年开始创建.其最初目标是建立人类最大的常识知识库,其中包含了典型的常识知识,例如"每棵树都是一种植物"和&qu ...
- 知识图谱学习笔记——(二)知识图谱的表示
一.知识学习 声明:知识学习中本文主体按照浙江大学陈华钧教授的<知识图谱>公开课讲义进行介绍,并个别地方加入了自己的注释和思考,希望大家尊重陈华钧教授的知识产权,在使用时加上出处.感谢陈华 ...
最新文章
- 编写高性能Java代码的最佳实践
- 最长公共上升子序列 LCIS
- flutter TextField 输入框被软键盘挡住的解决方案
- 【MATLAB】三维图形绘制 ( 绘制网格 + 等高线 | meshc 函数 | 绘制平面 + 等高线 | surfc 函数 )
- Cacti 插件中setup.php 文件的编写
- HTML-CSS- JavaScript——网页三剑客
- ebm风扇选型手册_德国EBM离心风扇的八大结构组成你知道吗?
- c++日志文件中文显示乱码的问题及解决办法
- Java应用性能调优工具介绍及实践
- CSS3 多列布局列的填充方式column-fill属性
- Python实战从入门到精通第四讲——数据结构与算法2之实现一个优先级队列
- 基于MUI制作手机社交app通讯录列表页面源码
- 排序算法-归并排序详细讲解(MergeSort)
- 简述计算机网络的五层协议体系结构,计算机网络五层协议体系结构分别是什么...
- C语言实现求两个数的和
- 第一行代码中过时的通知写法更正;
- win7共享中心服务器运行失败,win7网络共享中心打不开怎么办
- 回车、换行、空格的ASCII码值
- 武汉最新测绘资质复审、换证所需资料及证书有效期
- asyncio中的call_soon、call_later、call_at、call_soon_threadsafe方法