随着计算机技术和网络技术的*发展,互联网上共享的文本呈海量趋势增长,包括数字图书馆环境下的大文本和社交媒体文本等。 灵玖软件Nlpir Parser开发平台指的是网络搜索、自然语言理解和文本挖掘的技术开发的基础工具集,开发平台由多个中间件组成,各个中间件API可以无缝地融合到客户的各类复杂应用系统之中,可兼容Windows,Linux,FreeBSD等不同操作系统。 1 汉语词法分析(分词、词性标注、人名地名机构名识别) 汉语词法分析能对汉语语言进行拆分处理,是中文信息处理*的核心部件。灵玖综合了各家所长,采用条件随机场(Conditional Random Field,简称CRF)模型,分词准确率接近99%,具备准确率高、速度快、可适应性强等优势;特色功能包括:切分粒度可调整,融合20余部行业专有词典,支持用户自定义词典等。 词性标注能对汉语语言进行词性的自动标注,它能够真正理解中文,自动根据语言环境将词语诸如“建设”标注为“名词”或“动词”。灵玖采用条件随机场(Conditional Random Field,简称CRF)模型,一级词性标注准确率接近99%,具备准确率高、速度快、可适应性强等优势。 人名地名机构名识别能够自动挖掘出隐含在汉语中的人名、地名、机构名,所提炼出的词语不需要在词典库中事先存在,是对语言规律的深入理解和预测。采用条件随机场(Conditional Random Field,简称CRF)模型,识别准确率达到97%,速度达到10M/s,可在此基础上搭建各种多样化的统计和应用。 2新语自动发现 新词自动发现技术能够识别出词典中没有出现过的词汇、短语、命名实体、流行用语,是语言文献分析方面的一把利器。新词发现脱胎于语言自动分词技术,又是对分词技术的有效提升和补充。 灵玖采用基于语义的统计语言模型,所处理的文档不受行业领域限制,能够有效地挖掘出新出现的特征词汇,所输出的词汇可以配以权重。 新词发现的主要特色在于: 1、速度快:可以处理海量规模的网络文本数据,平均每小时处理至少60万篇文档; 2、处理精准:Top N的分析结果往往能反映出当时的时事流行语和热点实体,适合于舆情热点计算;与国际上着名厂商的技术相比,各项指标远远良好,或许是灵玖更懂中文吧; 3、精准排序:新词汇按照影响权重排序,可以输出权重值; 5、开放式接口:新词发现组件作为LJParser的一部分,采用灵活的开发接口,可以方便地融入到用户的业务系统中,可以支持各种操作系统,各类调用语言。 新词发现组件可以应用于文本挖掘、知识管理、词典编辑、舆情监测等多种应用中。 3 文本内容去重 文本内容去重能够对文本进行查重处理,同时能找出所有的重复文件。能够快速准确地判断文件集合或数据库中是否存在相同或相似内容的记录。灵玖采用高效的文章指纹算法,能够在较短的时间内与历史指纹库进行对比,从而发现重复记录。 4 文本分类过滤 文本分类能够根据文献内容进行类别的划分,可以用于新闻分类、简历分类、邮件分类、办公文档分类、区域分类等诸多应用。 文本过滤功能能够从大量文本中快速识别和过滤出符合特殊要求的信息,可应用于品牌报道监测、垃圾信息屏蔽、敏感信息审查等领域。 灵玖采用基于内容的文本自动分类过滤和基于规则的文本分类过滤两种方式,并支持两种方式的混合分类。能够进行多级分类,分类速度每秒100篇以上,平均准确率90%以上,能够进行中英文分类和中英文的混合分类。用户可以灵活、方便的更换模板,来实现对不同的主题的分类过滤。 5 文本聚类 文本聚类是基于相似性算法的自动聚类技术,自动对大量无类别的文档进行归类,把内容相近的文档归为一类,并自动为该类生成标题和主题词。适用于自动生成热点舆论专题、重大新闻事件追踪、情报的可视化分析等诸多应用。 灵玖基于文章集合核心语义理解技术,不仅聚类速度快,而且准确率高,并能自动得到类别间的演化趋势。 6 文档关键词提取 文章关键词提取能够在全面把握文章的中心思想的基础上,提取出若干个代表文章语义内容的词汇或短语,相关结果可用于精化阅读、语义查询和快速匹配等。 采用基于语义的统计语言模型,所处理的文档不受行业领域限制,且能够识别出较新出现的新词语,所输出的词语可以配以权重。 文章关键词提取组件的主要特色在于: 1、速度快:可以处理海量规模的网络文本数据,平均每小时处理至少50万篇文档; 2、处理精准:Top N的分析结果往往能反映出该篇文章的主干特征; 3、精准排序:关键词按照影响权重排序,可以输出权重值; 4、开放式接口:文章关键词提取组件作为LJParser的一部分,采用灵活的开发接口,可以方便地融入到用户的业务系统中,可以支持各种操作系统,各类调用语言。 主要接口: /*----------------------------------------------------------------------- * 功能:初始化 * 参数:sLicenseCode - 授权码 * 返回:true - 成功;false - 失败 * 备注:在进程中此函数必须在其他函数之前调用(只需执行一次) ------------------------------------------------------------------------*/ KWEXTRACT_API bool KDT_Init(const char *sLicenseCode=0); /*----------------------------------------------------------------------- * 功能:分析文本内容 * 参数:sText - [IN] 文本内容(以'\0'结束的字符串) * nMaxCount - [IN] 较多抽取多少个关键词 * bWeightFlag - [IN] 是否输出权重 * 返回:特征词字符串(以\t分隔,词和权重间用空格分隔);出错返回空串 * 备注:在进程中此函数可以在特征词抽取之前执行多次 ------------------------------------------------------------------------*/ KWEXTRACT_API const char* KDT_ParseContent(const char *sText, int nMaxCount, bool bWeightFlag=false); //退出,释放资源;进程结束前须调用它释放所占用的内存资源 KWEXTRACT_API void KDT_Exit(); //获得错误消息 KWEXTRACT_API const char* KDT_GetLastErrMsg(); 7 文本摘要 自动文本摘要能够实现文本内容的精简提炼,从长篇文章中自动提取关键句和关键段落,构成摘要内容,方便用户快速浏览文本内容,提高工作效率。 自动摘要不仅可以针对一篇文档生成连贯流程的摘要,还能够将具有相同主题的多篇文档去除冗余、并生成一篇简明扼要的摘要;用户可以自由设定摘要的长度、百分比等参数;处理速度达到每秒钟20篇。 主要接口: /*----------------------------------------------------------------------- * 功能:初始化 * 参数:sLicenseCode - 授权码 * 返回:true - 成功;false - 失败 * 备注:在进程中此函数必须在其他函数之前调用(只需执行一次) ------------------------------------------------------------------------*/ DOCSUMMARY_API bool DS_Init(const char *sLicenseCode=0); /*----------------------------------------------------------------------- * 功能:生成单文档摘要 * 参数:sText -[IN] 文档内容 * fSumRate -[IN] 文档摘要占原文百分比(为0.00则不限制) * iSumLen -[IN] 用户限定的摘要长度 (为0则不限制) * 返回:摘要字符串;出错返回空串 * 备注:在进程中此函数可以执行多次 ------------------------------------------------------------------------*/ DOCSUMMARY_API const char* DS_SingleDoc(const char *sText, float fSumRate=0.00, int iSumLen=250); //退出,释放资源;进程结束前须调用它释放所占用的内存资源 DOCSUMMARY_API void DS_Exit(); //获得错误消息 DOCSUMMARY_API const char* DS_GetLastErrMsg(); 8 网页正文提取 网页正文提取能够实现HTML格式的精确分析,自动分辨出网页是属于索引页面还是内容页面。对于内容页面,能够高效剔除HTML标签和导航、广告等干扰性文字,返回实际有价值的正文内容。特别适用于大规模互联网信息的高效预处理和分析。 灵玖基于统计分布规律模型判定网页的特征,所适用的网页不受类型和领域的限制,不需要配置抽取规则,能够全自动地对海量互联网页信息进行高效处理。 主要接口: //初始化 HPARSER_API bool HPR_Init(const char *sLicenseCode); //退出,释放资源 HPARSER_API void HPR_Exit(); //对HTML进行解析(只有执行此函数后才能HPR_GetContent) HPARSER_API bool HPR_ParseFile(const char *sHtmlFilename); HPARSER_API bool HPR_ParseBuffer(const char *sHtmlBuffer, int nLen); //提取正文,返回NULL时表示失败(调用TE_GetLastErrMsg可获得错误提示) HPARSER_API const char* HPR_GetContent(); //获得错误提示消息 HPARSER_API const char* HPR_GetLastErrMsg(); 9 全文搜索 全文搜索内核经过精心设计,具有高扩展性和高通用性。可支持文本、数字、日期、字符串等各种数据类型的高效索引,支持丰富的查询语言和查询类型,支持少数民族语言的搜索。 同时,全文搜索可以无缝地与现有数据库系统融合,实现全文搜索与相关的数据库管理应用系统。 其主要特色在于: * 可以按照任意*字段的排序,支持*字段的搜索,也可以搜索多个字段,以及复杂表达式的综合搜索; * 支持精确匹配以及模糊匹配,默认为精确匹配,忽略字母大小写进行模糊匹配; * 实现的是多线程搜索服务; * 每秒可索引3000条记录(主要瓶颈为数据库或文件记录的读取效率);搜索速度在毫秒级别。 * 兼容当前所有厂商的数据库系统,其中SQL Server, Oracle, MySQL,DB2等。 主要接口: ////////////////////////////////////////////////////////////////////////// // 以下部分为索引API ////////////////////////////////////////////////////////////////////////// //索引系统初始化 //sDictFilename:词典文件名;为空时,采用n-gram索引方法 LJSEARCHAPI_API bool LJIndexer_Init(const char *sDictFilename=0); //系统退出 LJSEARCHAPI_API bool LJIndexer_Exit(); //索引合并,sIndexFile1的doc_id编号均小于sIndexFile2的doc_id LJSEARCHAPI_API bool LJIndexer_Merge(const char *sIndexFile1,const char *sIndexFile2,const char *sIndexMerged); //建立索引的类 class LJSEARCHAPI_API CLJIndexer { public: //内存大小控制 CLJIndexer(int nMaxMemSize=512000000); bool MemIndexing(const char *pText,int doc_id,unsigned char nFiledID=0xff,int nMemSize=0);//索引一段内存,doc_id由应用程序维护 bool FileIndexing(const char *sTextFilename,int doc_id,unsigned char nFiledID=0xff);//索引一个文本文件,doc_id由应用程序维护 bool IdIndexing(int term_id,int doc_id,unsigned char nFiledID=0xff);//词ID索引,doc_id由应用程序维护 bool Save(const char *sIndexFile);//索引保存的名称 } ////////////////////////////////////////////////////////////////////////// // 以下部分为搜索API ////////////////////////////////////////////////////////////////////////// //检索系统初始化 //sDictFilename:词典文件名;为空时,采用n-gram索引方法 //sIndexFile:索引文件 LJSEARCHAPI_API bool LJSearch_Init(const char *sIndexFile,const char *sDictFilename=0); //系统退出 LJSEARCHAPI_API bool LJSearch_Exit(); //搜索结果结构,用于检索计算使用 typedef struct tRESULT_RECORD { int doc_id; int offset;//在域字段内的偏移量 double score;//排序用的打分机制 }RESULT_RECORD; typedef RESULT_RECORD * RESULT_RECORD_VECTOR; class LJSEARCHAPI_API CLJSearcher{ public: CLJSearcher(int sort_type=SORT_TYPE_DOCID); //索引保存的名称,检索之前,必须Load索引文件 bool Load(const char *sIndexFile); //搜索关键词,返回搜索结果数目; //结果存储在m_pResult指针内,*修改,只读即可 const RESULT_RECORD_VECTOR Search(const char *sKeyword,int *p_nResultCountRet,int nSize=0); };