之前遐想的中文语义分析
1.中文短句结构简述
主语:指明说的是什么人或什么事
谓语:指明主语”是什么”或”怎么样”
宾语:跟在动词后,表示动作,行为涉及到的人或事物.
定语:名词前面连带成分,用来修饰,名词表示人或者事物性质,状态,数量,所属.
状语:动词前面连带成分,表示动作的状态,方式,时间,处所或程度.
补语:动词或者形容词后面的连带成分,表示动作的情况,结果,程度,趋向,时间,处所,数量,形状等.
独立成分:不与其他成分产生结构关系,但意义上是全局必需,表示对事物的推测,估计,补充,感叹等语气.
复指成分,用两个或者两个以上短语指同一个事物,作为同一个句子成分.
Ex:
[修饰全句的状语]+(定)主+[状]谓<动补>+(定)宾+<宾补>
[每当有外地人来],(好客的)天津人[总是][眉飞色舞地]谈<起了>(天津的)小吃<有多么地道>
2.分析目标
我们只分析一句话有用没用,而不去分析这句话对目标对象是好是坏.比如一个评价,它从语义上来看对这个商品来说是相当差的评价,但是经过我们分析那么可能会被判定有实用性的评价,相反一条评价对于商品来说是一条极好的评价,也可能会被我们判定实用性差的评价.
3.总体步骤
整句话用常见中文句子分隔符”,””.””!”分割,形成分句map<sentence, score>, key表示分句,score表示分句分数评定.
检测sentence map短句相似性(暂时进行简单的短句字符重复匹配).80%以上句子相似判定 整条数据为 0(满分255)实用性.
逐个分句进行分析.按照中文句子正常成分分析,按如下模式(或者更加多的模式)切割,填充到Map<classify,term>,classify表示词语的性质(主(subject),谓(predicate),宾(object),定(attribute),补(complement)),term表示词汇本身. 每个classify在整个分句的评分中有一定比重.
[修饰全句的状语]+(定)主+[状]谓<动补>+(定)宾+<宾补>
逐一对termMap中的term进行鉴定. 5种词汇评价方式不一样:
(1)主语主要判定与业务实体的关联性(比如评价主要按购买的物品,买家,卖家的关联性优先级高到低评定)
(2)谓语主要判定对业务实体进行动作的关联性(比如评价主要按使用,观察等优先级由高到底评定).
(3)定语和状语主要给谓语或者宾语分数进行放大作用
(4)宾语主要判定与业务实体的关联性(比如评价主要按购买的物品以及物品相关的配件, 卖家用户信息,买家用户信息的关联性优先级高到低评定)
将所有classify term的分数按比重相加(谓词和宾语需要乘上状语和定语的放大系数),成为一个短句的分数.填充到sentence map.
所有sentence map中短句分数相加. 即为整个句子的评分.
4.判定核心原理
顺序遍历每种句式,将原始文本的词汇在每种句式上的位置进行标识.也就是进行初步的词汇判定.
其中一种句式如下
[修饰全句的状语]+(定)主+[状]谓<动补>+(定)宾+<宾补>
对[主,谓,宾,定,补]每种类型建立词库.上诉已经产生几种句式的词汇类型映射. 然后逐一验证每个句式类型映射的词是否在对应类型的词库中.
最终选取匹配度最高的句式作为词汇映射结果.
5.整体结构
(1)SplitorTask:使用中文分词器进行切分.
输入 原始文本,
输出 CompleteSentence(List<PartSentence(part_sentence ,score)>,score),原始score为0
(2)SentenceDupCheckTask:对分句进行排重.
输入 CompleteSentence(List<PartSentence(part_sentence ,score)>,score)
输出 CompleteSentence(List<PartSentence(part_sentence ,score)>,score)
(3)TermAanalyerTask:进行分词 classify.
输入 CompleteSentence(List<PartSentence(part_sentence ,score)>,score)
输出 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
(4)TermEvaluateTask:进行term的评分.
输入 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
对象(score为0),
输出 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
DetailTerm对象(已评分)
(5)SentenceEvaluateTask:进行综合评定
输入 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
DetailTerm对象(已评分)
输出 CompleteSentence(map< PartSentence,DetailTerm(term,classify,score)>,score)
CompleteSentence对象(已评分)
分享到:
相关推荐
语义分析是编译器设计中的一个重要阶段,它在词法分析和语法分析之后进行,目的是确保源代码的语义正确性。在这个实验中,“实验三_编译原理语义分析_语义分析_sectionnef_”主要关注的是如何利用Java语言实现编译器...
《编译原理:深入理解语义分析》 在计算机科学领域,编译原理是一门至关重要的课程,它探讨了如何将高级编程语言转化为机器可执行的指令。本资源是北京邮电大学大三学生的课程项目,专注于语义分析这一关键阶段。...
编译原理语法分析语义分析 语法分析(Syntax analysis或Parsing)和语法分析程序(Parser) 语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,...
在编译原理语义分析实验报告中,我们可以通过语义分析实验报告,来掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。该实验报告的主要目标是通过递归下降语法制导翻译法,对算术表达式、赋值语句进行...
语义分析是编译器设计中的关键步骤,它在词法分析和语法分析之后进行,目的是检查源程序的语义是否正确,并将其转化为计算机可理解的形式。在这个“语义分析实验(Java版)”中,我们将重点探讨如何利用Java语言实现...
### 编译原理中的语义分析与歧义分析——基于Java实现 在计算机科学领域,编译原理是理解和设计编程语言的重要基石。其中,语义分析和歧义分析是编译过程中不可或缺的环节,尤其在现代高级编程语言的编译器开发中...
语义分析是编译原理中的一个重要环节,它在程序设计语言的编译过程中扮演着至关重要的角色。本实验报告和代码主要关注的是如何使用C语言实现一个简单的语义分析器。下面将对语义分析的基本概念、过程以及C语言实现...
这次编译原理实验要求实现语义分析,但最近空闲时间比较少,只能快速过一遍基础知识硬着头皮写了。但由于之前我设计文法大多只是为了测试使用,所以文法很不规范,这直接导致了语义子程序十分难实现,所以要想实现一...
《编译原理与C++语义分析在VC6.0中的应用》 编译原理是计算机科学中的一个重要分支,它研究如何将高级编程语言转换为机器可以理解的指令集,即汇编或机器码。这一过程包括词法分析、语法分析、语义分析和代码生成等...
语义分析器是编译器设计中的一个重要组成部分,它在编译过程中扮演着至关重要的角色。编译原理是一门深入探讨计算机程序如何被转换为机器可执行代码的学科,而语义分析是其中的关键阶段。在这个阶段,编译器不仅检查...
语义分析程序的设计与实现 仅供参考。 语义分析 编译原理 北邮 大三 实验要求:编写语义分析程序,实现对算术表达式的类型检查和求值。要求所分析算术表达式由如下的文法产生。 实验要求:用自底向上的语法制导...
语义分析(自定的语义规则)代码python实现。 说明: 1. mktable(previous):创建一张新的符号表,并返回指向新表的指针。参数previous指向先前创建的符号,放在新符号表的表头。 2. enter(table, name, type, offset...
【编译原理 语义分析 实验报告】 实验的目的在于深入理解语法制导翻译的原理,这涉及到将解析器在语法分析阶段识别出的语法结构转换为中间代码的过程。语义分析是编译器设计中的关键步骤,它关注的是程序的意义而非...
在这个过程中,词法分析、语法分析和语义分析是编译器设计的三个主要阶段,它们共同确保源代码的正确性和可执行性。在"语义分析代码 1234"这个主题中,我们将深入探讨这些概念,特别是关注C++程序设计中的语义分析。...
《编译原理实验四——语义分析:Java实现与递归下降法》 在计算机科学领域,编译原理是理解程序设计语言如何转化为机器可执行代码的关键学科。本实验主要探讨的是语义分析这一编译过程的重要阶段,采用Java语言进行...
语义分析是编译器设计中的一个重要阶段,它在词法分析和语法分析之后进行,主要目的是检查源代码是否符合编程语言的语义规则,并为后续的代码生成做准备。这个"一个简单的语义分析程序"很可能是为了教学或实验目的而...
词法分析、SLR语法分析和SLR语义分析是编译器设计与实现的关键步骤,让我们逐一深入探讨这些概念。 首先,词法分析(Lexical Analysis)是编译过程的第一步。它将源代码按照字符流进行扫描,识别出有意义的符号单元...
语义分析器是编译器中的关键组件,负责确保程序的语义正确性,即检查代码是否符合语言的语法规则并能正确表达程序员的意图。本资源提供了用C语言实现的语义分析器,它专注于解析C语言的部分语法结构,并将其转化为三...
### 编译原理实验语义分析源代码C语言实现 #### 实验背景及目标 本实验旨在通过具体的编程实践加深对编译原理中语义分析部分的理解与掌握。语义分析是编译器设计中的一个重要环节,其主要任务是对源程序进行更深...
本项目专注于使用Java实现词法、语法和语义分析器,这些都是编译器设计与实现的核心部分。以下是关于这些知识点的详细说明: **词法分析器(Lexer或Tokenizer)** 词法分析器是编译器的第一步,它将源代码分解成一...