system: [SYSTEM]

user: 3. 基于分词工具的半自动化文档分析方法步骤 周泽龙在《可实施的COSMIC方法研究》 [ 3 ] 一文中，使用汉语句法分析功能用户需求(Function User Requirement，下文简称FUR)，能够得到部分度量元素，但是实践发现在个别处理步骤中，人工操作只是做了简单的重复性工作，工作量大且易纰漏，基于此，本文作者尝试将智能分词工具引入该方法，替代部分人工步骤，具体方法步骤及处理规则如下3.1~3.10。 3.1. 从需求文档中找出功能需求章节 GJB438B-2009《军用软件开发文档通用要求》，规范了软件需求文档的正式格式，其中需求文档内容应当包括：范围、引用文件、需求、合格性规定、需求可追踪性、尚未解决的问题和注解等七个部分 [ 4 ] 。通常我们需要找到需求部分，从中提取描述软件功能需求的相应章节。 3.2. 将功能需求章节分割成独立的FUR短句 规则：将文档中的“换行符”“，”“。”“；”处断开，分割成独立的FUR短句。 使用表1所示的正则表达式操作字符串，能够得到FUR短句。 3.3. 手工调整FUR短句 规则3.3.1：语态变换。将被动语态的FUR短句转换成主动语态。 规则3.3.2：拆分规则。含有两个或多个并列动词的复句应分解为两个或多个短句。 规则3.3.3：合并规则。下列情况中的“，”不应作为FUR短句的结束标识符，应将多个短句合并为一句： · 用于并列词语之间，表并列关系的“，”。 · 用于句子内部，表语气停顿的“，”。 规则3.3.4：排除规则。排除下列非功能需求语句： · 排除介绍软件质量、性能、实现功能类语句。如“主控程序收到自检指令完成检查并返回结果的时间小于30秒”。 · 排除概括性、总结性语句和章节标识。如“1.登陆1.1简要描述这个用例描述用户是如何登陆到课程注册系统的”。 Table 1 Use java language to punctuat File file = new File(““); FileWriter fw = new FileWriter(““); BufferedReader br =new BufferedReader(new InputStreamReader(new FileInputStream(file)gb2312“)); String str = null; while((str = br.readLine())!=null){ //去除读入一行中的空格和回车 String s= str.replaceAll(“\\p{Z}““); //匹配正则，替换[，。；]，后加入回车符 s = str.replaceAll(“([，。；])“$1“+“\r\n“); fw.write(s); System.out.println(s); fw.flush(); } fw.close(); br.close(); 表1. 使用java语句实现断句 · 排除数据运算类语句。如“将实时温度与目标温度进行比对”。 · 排除其他无数据移动动作的语句。如“XXXX进入到软件定时中断”。 3.4. 结合上下文补全FUR短句成分 经过断句处理后的FUR短句，往往语法成分不全，在本步骤中，我们需要结合上下文，按照一般的行文语法规则将省略的句子成分尽可能地补全。 规则3.4.1：补全主语。常见于待度量软件作为短句主语被省略的情况。 规则3.4.2：补全状语。常见于短句表示对象的状语缺失等情况。 规则3.4.3：无法补全。短句主语、状语均被省略。常见于动作的发起者是待度量软件，而接收者也是待度量软件或者是存在于它内部的存储器。这种情况，应结合上下文将显而易见的缺失补上，对于那些无法通过上下文判断的残缺成分，不能盲目补全。 3.5. 联系上下文找出用来替换代词的实体名词 为避免重复，需求文档除了采用“省略”手法外，还广泛地使用代词来代替前文中出现过的词或提到的内容，常使用的代词有人称代词(“他”、“它”等)和指示代词(“其”、“这个”等)。在本步骤中必须根据上下文的逻辑关系正确判断代词所替代的具体内容，如分析不当，往往会“张冠李戴”，导致功能用户识别错误。 规则3.5.1：将短句中所有指代待度量软件的词替换为同一个词。 规则3.5.2：通过上下文将其余代词的指代对象找出，用相应的实体名词替换。 3.6. 利用分词软件将FUR短句按照词性进行切分 本文选择了的NLPIR汉语分词系统作为分词工具用来辅助人工度量，同样功能的分词工具还有很多，如Stanford汉语分词工具、哈工大语言云(LTP-cloud)、庖丁解牛分词、盘古分词等。中文分词工具相对于以英文为代表的拉丁语系语言分词工具在分词的准确性上还有不小的差距，但多数软件都开发了用户自定义词组等功能方便人工校订。 中国科学院计算技术研究所研发的NLPIR汉语分词系统(ICTCLAS2013及以后版本)，主要包括中文分词、词性标注、用户词典、新词发现和关键词提取等功能[ 5 ] 。本步骤使用NLPIR2015分词工具将处理好的FUR短句进行分词。 3.7. 利用工具将切分好的词进行词性标注 NLPIR2015不但可以将FUR短句按词性进行切分，而且对切分好的词语都会进行词性标注，标注依据计算所汉语词性标记集Version3.0 [ 5 ] ，表2列出了常见的词性标记： 分析输出结果发现，智能工具的优点很明显，就是处理文档的速度快，也不会因为疏忽而出现遗漏，同样的，工具的缺点也很突出，如无法结合上下文断句，生僻词不能够准确划分，度量不关心的词语和标点也进行了词性标注等。其实，如果需要更加准确地进行机器识别，那么就要增加识别规则，必然将增大计算机的开销，然而在使用工具处理之后，再利用人工进行校对处理，却能收到很好的效果。 3.8. 人工纠正划分错误的词语、删除标点符号的词性标注 规则3.8.1：一般词拆分错误，手工逐个更正。对于更正后的词语，应联系上下文手工标注词性。 规则3.8.2：领域专用词拆分错误，使用NLPIR分词系统中的“用户词典”功能和“自定义词性”功能，批量修改文档中出现的分词错误并重新标定词性。 NLPIR提供了可视化操作界面，其中“用户词典”功能演示效果如图1所示。 规则3.8.3*(可选)：删除副词、助词、字符串、标点符号等与度量无关的词性标注。 Table 2 Common speech lis 标记符号 中文词性 n 名词 v 动词 vn 名动词 rr 人称代词 p 介词 c 连词 cc 并列连词 表2. 常见词性列表 图1. NLPIR分词系统中的“用户词典”功能和“自定义词性”功能 COSMIC方法往往只关心描述数据移动的动词以及承担动作发起者或者接收者的名词，为了避免干扰，可以将对度量没有影响的副词(如d)、助词(如u、ude1的、ule了等)，以及字符串(如x)和标点符号(如wj句号、wd逗号、wh单位符号)等词性标注删除。 3.9. 依据汉语语法规则划分FUR短句句子成分 该步骤通过语法分析，将每一个FUR短句中重要的句子成分划分出来。我们知道，一个完整句子其成分的排列顺序应该为：修饰主语的定语 + 主语 + 状语 + 谓语 + 补语 + 修饰宾语的定语 + 宾语，具体应用时各个成分的组合是非常灵活的，尽管汉语语句浩如烟海，写作运用的自然句子无穷无尽，但软件需求文档的写作风格却相对固定，使用的句子结构类型也十分有限，其规律也是可循的[ 6 ] 。经验说明，经过处理后的FUR短句满足以下三种句子模型： (修饰主语的定语) + 主语 + 状语 + 谓语 + (修饰宾语的定语) + 宾语。 (修饰主语的定语) + 主语 + 谓语 + 宾语 + 宾语补足语。 (修饰主语的定语) + 主语 + 谓语 + 直接宾语 + (定语) + 间接宾语。 如果忽略对度量无影响的定语，以上三种模型可简化为：“主状谓宾”结构、“主谓宾补”结构和“主谓双宾语”结构。 《现代汉语句子成分的分析》[ 7 ] 一书中介绍了句子成分分析的一般方法，有图解法、文字说明法和加线法等。本文使用Excel软件，将上述三种结构中每个句子成分作为一列，填入表头作为列名称，删除对度量没有影响的定语列、补语列等列，将每个FUR短句中充当相同句子成分的词语进行词对齐操作，填入如表3所示的相应列中。 3.10. 提取候选功能用户 规则3.10.1：待度量软件、功能用户以及持久存储器，在FUR短句中可均充当主语、状语、补语或直接宾语。 我们依据该规则，在Excel中将主语列、状语列、补语列、直接宾语列合并，得到一个“混合列”。再剔除“混合列”中内容重复的单元格、待度量软件和“空值”，就可以得到全部功能用户的集合了。 值得注意的是，在3.4节中，我们已将显而易见的待度量软件补入句中，而无法联系上下文判断的持久存储器(FUR的描述语句通常不会刻意提及“持久存储器”这个概念[ 3 ] )没有盲目补全，这就导致3.9节列出的句子成分中，有部分单元格为“空值”，这些“空值”一般是指持久存储器，但也不排除是功能用户的特殊情况，故最终得到的全部功能用户集合，严格意义上说是一个候选功能用户集合。