Skip to content

Guidachengong/ltp

Repository files navigation

+++++***+++++
2011-6-2]
所有的模型文件存放在ltp_data.zip中,因此运行LTP时需要先将该压缩包解压至当前文件夹。

+++++***+++++
2010-2-2
升级SRL程序以及模型文件

+++++***+++++
2009-12-18
ltp_data 可在如下地址下载:
	http://node03.gaoliqi.com/down/ltp_data.tgz

+++++***+++++
2009-10-12
同时支持Windows和Linux


+++++***+++++
2009-06-19
v2.1
1. 增加CRFWordSeg接口
2. 解决了若干svmtagger的bug
3. 解决了若干ner的bug
4. 解决LTP对文字进行修改的bug
5. 解决使用vector作为DLL接口参数类型的bug (VS2008下出错)
6. 更新LTP使用文档
7. 最新版我们只提供vs2008对应的DLL,如果希望在visual studio其他版本上运行,可以尝试安装
	Microsoft Visual C++ 2008 Redistributable Package (x86)
	http://www.microsoft.com/downloads/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en


+++++***+++++
2008-12-30
使用svn来管理代码、数据、文档,并且将share-package也加入到这个体系中,支持自动发布:tools/distrubition.dat

增加vs2008支持

修改文档:LTP使用文档,updates.txt等

+++++***+++++
2008-12-28
针对LTP网站上遇到输入空文本(只包含空格,全角空格)便会重新加载资源的问题:
	如果处理过程中出错,不exit,只说明出错,并log
	在ltp_v2.0_start.py中增加文档检查是否为空文本,如果是便不能提交。

网站使用最新DLL: gparser

刘龙提出分句模块还有些不合理,准备借鉴刘龙的分句正则表达式(python),使用boost库修改现在的模块。

+++++***+++++
2008-12-26

将mstparser更名为gparser (graph-based parser)

vs2008下编译运行时发现两个bug:
1. _gparser/MyLib.cpp中my_getline(): size_t end = xx.size() - 1; 改成 int end..
2. _gparser/DepParser.cpp中addArcFeature: inst.postag[0]越界
   修改_gparser/DepParser.cpp中fillInstance(): 增加postag, feat的resize
没有更新网上的共享v2.0

+++++***+++++
2008-12-21

修改mstparser输出 wp->n 的情况,保证任何词的父亲不会是wp

删除sds, text-classify, cr相关代码,数据;保留xml4nlp中的相关代码(防止TMS系统使用)

保留mjs-parser

#发现svmtagger的一个问题:2008年/m 12月/m 22日/m 应该是(nt)

+++++***+++++
2008-12-14

使用mstparser替换原来马金山的parser

修改相应的xmlnlp及ltp...

修改nlp_style.xsl为v2.0

+++++***+++++
2008-09-23

TextClassify模块无论输入任何任何文本都输出“军事”。
删除模型中的SVMTestFile.dat即可(每次处理都会写这个文件)。

查看源代码发现:
PatternChangeForSVM::OutputSVMDataFile()打开这个文件,没有判断是否打开。
而这个文件被我无意中变成了只读文件。

修改这个函数,判断文件是否成功打开,并且输出错误信息。


+++++***+++++
2008-07-07

发布v1.5.0 

+++++***+++++
2008-7-5
srl处理某些文本的时候ARG的位置总是第1个。胡禹轩发现是模型问题,并且修正了这个错误。

+++++***+++++
2008-7-1
svmtagger简单处理英文串?/ws;ppmmm/ws;之前识别为nh。
还需要改进:?/wp

+++++***+++++

2008-6-26
增加了基于svmtool的汉语词性标注模块。
接口:
	保留原来的int IRLAS(),完成词法分析的功能:基于图的分词+基于HMM的词性标注
	增加:
		int SegmentWord(); 	# 分词,调用IRLAS中的分词
		int PosTag();	# 基于svmtool的词性标注。
保留IRLAS接口的原因:
	和以前版本兼容,用户如果不想使用新的模块,则不需要修改程序。
	方便用户对比两种词性标注方法。

用户如何修改原来的程序以使用新的词性标注模块?
	将用户程序中的IRLAS直接替换成PosTag即可。(根据模块的依赖关系,PosTag会自动调用SegmentWord。)

另外需要注意:
	如果调用了SegmentWord,那么只能通过PosTag进行词性标注。(IRLAS是一个集成的接口,要么做分词+词性标注,要么什么都不做。)
	

+++++***+++++

2006-10-12:
解决NE和SDS(单文档自动文摘)两个模块不能重复调用的问题,原因是这两个模块的资源加载和释放存在问题。
现在如下调用main2()就很顺利了。

void main()
{
	clock_t start = clock();
	cout << main2("S01.txt","S01.xml","ltpconfig.ini") << endl;
	cout << ((float)clock() - start) / CLOCKS_PER_SEC << endl;

	start = clock();
	cout << main2("S01.txt","S02.xml","ltpconfig.ini") << endl;
	cout << ((float)clock() - start) / CLOCKS_PER_SEC << endl;
}

我们会在下一次更新中,提供对各个模块更加灵活的调用方式。

+++++***+++++

2006-10-16:
生成VC6下的DLL,共享给用户。

+++++***+++++

2006-10-18
初步实现LTP的框架。

为了防止内存泄漏,修改XML4NLP这几个函数:
增加:~XML4NLP() {Clear();}
BuildDOMFrame()
三个LoadDOMFrom...()
其中BuildDOMFrame,和其中的两个LoadDOMFrom必须改,否则会有内存泄漏。

+++++***+++++

2006-10-22:
由于XML4NLP的结构存在根本上的问题:采用继承的方式使用TinyXml。
在程序中出现了大量的static_cast<InheritedClass *>(BaseClassObjPtr)的现象;
增加了程序复杂度;
无法方便的换解析器(如果要换的话);
抗错误操作的能力不强,异常机制也没有。

鉴于以上原因,重写XML4NLP,但是接口保持不变。
主要的改变:
不采用继承机制,而将TinyXml作为一个内部成员使用;
像以前一样采用树状结构,将DOM上对应doc, para, sent, word的节点存储在vector中;
增加了note及其操作;
改变以前的做法:如果还未分句,则将段落内容作为第一句。现在采用如果没有分段,则没有分句节点。
大量的错误判断,但是还是没有使用异常;
将所有的标记都以const char * const在头文件中声明,以后改变标记比较容易;

存在问题:
1.
MapGlobalSentIdx2paraIdx_sentIdx()
MapGloablWordIdx2paraIdx_sentIdx_wordIdx()
还没有进行优化。

2.inline的使用?为什么不能使用在头文件声明,cpp定义的方式?两个都使用了inline修饰符

+++++***+++++

2006-10-24
1.为了对旧的LTML文件格式进行修改,增加了void CheckNoteForOldLtml();完成对旧的LTML检测哪些模块已经被调用了,
然后相应的添加note标记。
2.对SetInfoToSentence中vecInfo大小和word num不相等时的错误提示进行了修改。
3.实现了依赖关系
4.增加了irlas,ne,和sds的选项设置功能,但是由于还有一些设计上和模块自身的问题,推荐不要使用,而使用默认的选项设置。
	sds的选项设置还提供了一个重载函数实现。
5.增加了错误判断,代码更加安全

+++++***+++++

2006-12-4:
准备发布v1.2。
支持以前的接口,提供更多的,更灵活的接口。
需要在LTPv_1_2_share中做一些必要的变化。

2006-12-5:
修改xsl文件,以适应新的xml数据格式。(<para id=" ">...</para>)

考虑是否采用<note>

+++++***+++++

2006-12-16
1.修改接口	
string	XML4NLP::GetParagraph(int paragraphIdx) const;
为
int XML4NLP::GetParagraph(int paragraphIdx, string &strParagraph) const;

+++++***+++++

2006-12-18
1.增加接口。
由于DLL分配内存时在自己的local heap上分配,导致DLL中分配的内存无法在DLL外部释放。
因此类似
LTP_DLL_API int GetWordsFromSentence(vector<string> &vecWord, int sentenceIdx);
的接口都无法正常工作。
添加类似
LTP_DLL_API int GetWordsFromSentence(vector<const char *> &vecWord, int sentenceIdx);
这样的接口。需要在传入vecWord前根据CountWordInSentence(sentenceIdx)的值resize vecWord的大小。

+++++***+++++

2006-12-21
增加了所有需要的接口以支持用户对DOM的get操作。并且进行了初步的测试。现在系统已经可以很方便的为实验室内部或外部使用。

祝慧佳修改了NERtest.cpp中
void NERtest::getNEstring(unsigned int& begpos, string& strOut)
函数。解决了
"田壮/nh 壮憨然/nh 一/m 笑/v ";
"炮轰/v 布什/nh 越战/j 中/j 退缩/v ";
有时无法正常显示的问题。

改变了WSD的部分接口,使得数据路径可配置。

+++++***+++++

2006-12-25
由于林建国给的TextClassify新版本在VC7下面无法正常编译,因此我自行改了一下原来的版本,使得数据文件位置可配置。
Parser我也改了一下。所有的数据文件路径都可配置。

修改了LTP配置文件的内容。


+++++***+++++

2006-12-30

遇到了问题:
ltp_dll调用sds时,使用了system("del tmp.xml"),却没有删除!可能是文件夹只读的原因(无法改回去)。

分词问题(导致NE问题,进而cr也会产生一些问题,现在cr只是随便应付一下,不至于无法运行):

                <word id="10" cont="展示" pos="v" parent="9" relate="VOB" ne="O" />
                <word id="11" cont="的" pos="u" parent="15" relate="ATT" ne="O" />
                <word id="12" cont="穆" pos="j" parent="13" relate="ATT" ne="B-Nh" />
                <word id="13" cont="哈" pos="j" parent="14" relate="ATT" ne="B-Nh" />
                <word id="14" cont="吉尔" pos="nh" parent="15" relate="ATT" ne="B-Nh" />
                <word id="15" cont="照片" pos="n" parent="16" relate="DE" ne="O" />
                <word id="16" cont="的" pos="u" parent="17" relate="ATT" ne="O" />
                <word id="17" cont="相貌" pos="n" parent="18" relate="SBV" ne="O" />
                
                </word>
                <word id="10" cont="马斯理" pos="nh" parent="14" relate="ATT" ne="S-Nh" />
                <word id="11" cont="过去" pos="nt" parent="12" relate="ADV" ne="O" />
                <word id="12" cont="经历" pos="v" parent="13" relate="DE" ne="O">
                    <arg id="0" type="ArgM-TMP" beg="11" end="11" />
                </word>
                <word id="13" cont="的" pos="u" parent="14" relate="ATT" ne="O" />
                <word id="14" cont="细节" pos="n" parent="9" relate="VOB" ne="O" />
                <word id="15" cont="," pos="wp" parent="-2" relate="PUN" ne="O" />
                <word id="16" cont="却" pos="d" parent="17" relate="ADV" ne="O" />
                <word id="17" cont="连" pos="v" parent="7" relate="VV" ne="O">
                    <arg id="0" type="Arg1" beg="18" end="20" />
                </word>
                <word id="18" cont="他" pos="r" parent="19" relate="DE" ne="O" />
                <word id="19" cont="的" pos="u" parent="20" relate="ATT" ne="O" />
                <word id="20" cont="真名" pos="n" parent="17" relate="VOB" ne="O" />
                <word id="21" cont="(" pos="wp" parent="-2" relate="PUN" ne="O" />
                <word id="22" cont="穆哈吉尔" pos="nh" parent="26" relate="IS" ne="S-Nh" />
                <word id="23" cont=")" pos="wp" parent="-2" relate="PUN" ne="O" />
                <word id="24" cont="都" pos="d" parent="26" relate="ADV" ne="O" />
                <word id="25" cont="不" pos="d" parent="26" relate="ADV" ne="O" />
                <word id="26" cont="知道" pos="v" parent="7" relate="VV" ne="O" />
                <word id="27" cont="。" pos="wp" parent="-2" relate="PUN" ne="O" />

增加了一层包装,不需要用户自己resize()。

clear()不是basic_string的成员!因此XML4NLP类中的一些就需要修改一下。
教训是:应该至少在VC6下也测试一遍。
修改成
	strParagraph = "";

另外:
	if (0 != CheckRange(paragraphIdx)) -1; 居然可以编译通过! 赶紧修改过来。

VC6不支持语法:
class LTP
{
	static const unsigned int DO_XML = 1;
	static const unsigned int DO_SPLITSENTENCE = 1 << 1;
	static const unsigned int DO_IRLAS = 1 << 2;
}

修改成:
class LTP
{
	static const unsigned int DO_XML = 1;
	static const unsigned int DO_SPLITSENTENCE = 1 << 1;
}
然后在ltp.cpp中定义:
const unsigned int LTP::DO_XML = 1;
const unsigned int LTP::DO_SPLITSENTENCE = 1 << 1;

对inline函数的定义修改成规范的定义方式,在头文件中定义。

增加LTP_DLL接口:
LTP_DLL_API int CreateDOMFromString(const char *str);
如果没有这个接口,在VC6中调用
CreateDOMFromString("我是一个中国人")
就会抛出异常。可能还是分配内存的问题。

现在,VC7.1中生成的DLL就可以在VC6中使用了。

增加了接口:
LTP_DLL_API const char *GetParagraph(int paragraphIdx);

修改:
void XML4NLP::ClearDOM()
{
	m_tiXmlDoc.Clear();

	m_document_t.documentPtr = NULL;
	m_document_t.vecParagraph_t.clear();
	m_note.nodePtr = NULL;
	m_summary.nodePtr = NULL;
	m_textclass.nodePtr = NULL;
	m_coref.nodePtr = NULL;
	m_coref.vecEntity.clear();		// 增加!

	m_vecBegWordIdxOfStns.clear();
	m_vecBegStnsIdxOfPara.clear();
}

+++++***+++++

2006-12-30

通过反复验证:
发现使用VC7生成DLL,如果接口含有string,如
_declspec (dllexport) void processString(const string &str)
{
	cout << str.size() << endl;
}

如果使用VC6程序调用,则会输出很大的数,可以称为乱码。
怀疑在vc6和vc7.1在这方面不兼容,本身对string的实现就不一样。
而如果用同一种平台,不会出错。

此时如果使用string的复制等肯定会出错!

为此修改几个LTP接口:(不能有string参数)
将__ltp_dll.h中的
LTP_DLL_API int CreateDOMFromString(const string &str);
修改成:
inline		int CreateDOMFromString(const string &str)	// Due to incompatible between VC6 and VC7.1 in DLL
					{	 return CreateDOMFromString(str.c_str());	}


改变了几个接口,使接口形式一致:
LTP_DLL_API int _GetPredArgToWord(	vector<const char *> &vecType, vector< pair<int, int> > &vecBegEnd,
									int paragraphIdx, int sentenceIdx, int wordIdx);
LTP_DLL_API int _GetPredArgToWord(	vector<const char *> &vecType, vector< pair<int, int> > &vecBegEnd,
									int globalSentIdx, int wordIdx);
LTP_DLL_API int _GetPredArgToWord(	vector<const char *> &vecType, vector< pair<int, int> > &vecBegEnd,
									int globalWordIdx);

int GetPredArgToWord(	vector<const char *> &vecType, vector< pair<int, int> > &vecBegEnd, 
						int paragraphIdx, int sentenceIdx, int wordIdx);
int GetPredArgToWord(	vector<const char *> &vecType, vector< pair<int, int> > &vecBegEnd,
						int globalSentIdx, int wordIdx);
int GetPredArgToWord(	vector<const char *> &vecType, vector< pair<int, int> > &vecBegEnd,
						int globalWordIdx);
之前输出参数在后,输入参数在前。


+++++***+++++

2007-1-11
对外正式发布LTPv1.2

2007-1-14
增加了ltp_dll_for_python.dll,完成了Python Interface

2007-1-16
将工程中所有的GetMentionOfEnity修改为GetMentionOfEntity()

在Parser.cpp中,函数void CParser::CreateLeaf(int i)使用了vector::erase(iter+0)操作,
然后没有对iter进行赋值就直接继续使用。这是一个潜在的bug,在VC2005中体现出来。
VC2005代码的安全性更高了。

但是有一个问题:VC2005生成的Release版DLL只能用在Release工程中,Debug也是一样,无法在一个Debug工程中使用Release版的DLL。
还需要进一步验证。实验室只有刘怀军师兄真正使用VC2005调用LTP。


2007-1-21
修改了nlp_style.xsl中parser的显示部分:
1.箭头从parent指向children
2.句法分析结果中,某一个词的句法角色未知,此时其parent为自己的word idx,不显示这个词对应的弧


+++++***+++++

2007-4-4
Parser越界错误 Phrase.cpp

+++++***+++++

2007-4-10
IRLAS的extend_dict解密,相应的加载过程也修改了Dictionary.cpp。(by 付瑞吉)


+++++***+++++

2007-4-13
发布v1.3
1.IRLAS的extend_dict解密,不采用加密文件
2.Parser越界错误
3.采用LTMLv2.0格式
4.发布python包
5.补充英文文档


由于LTMLv2.0中去掉了wsdexp属性,所以ltp_dll的接口需要改变一下。可以考虑提供两个版本:一个是没有去掉wsdexp的,另一个是去掉的。
对于C接口(for python, perl...),需要wsdexp在DOM中存在,因此比较麻烦。
所以v1.3中仍然采用LTMLv1.0,即旧的格式。

将网站上LTP更新为LTPv1.3。



+++++***+++++
2007-4-30
刘老师要求修改句法可视化的弧的指向,从head节点指向依存节点(和以前相反),因此使用2007-1-21为马金山师兄提供的xsl版本。

发布v1.3.1

发现还存在一些问题:按句子显示时,句法显示和上面的显示有重叠现象,原因是


+++++***+++++
2007-6-14

分句对句子长度限制为1024,潘越群发现太小了
改成
#define POLARIS_SENTENCE_LENGTH 0xFFFF


+++++***+++++
2007-6-23
修改了模块、资源、网页等,统一正名为HIT IR Lab或者HIT-IR,更新了论坛地址,ltp的demo地址

+++++***+++++
2007-6-27 郎君提出
修改nlp_style.xsl文件中网页顶部显示部分,更新了论坛地址,去掉了密码iloveirlab

+++++***+++++
2007-6-27 王健楠提出

xmlnlp.cpp中分段处理
CreateDOMFromString("中国\r\n\r\n美国"),无法正常分段
于是将\r替换成\n

+++++***+++++
2007-7-16 宋巍提出问题

修改分句模块:SplitSentence.cpp
原来认为如果一段话的分句结果中包含0个句子时,就表示错误。
修改之后程序更加健壮了,即使遇到只含有空格的段落,也可以正确处理。

+++++***+++++
2007-8-31 浙大仇光提出问题
如果文本中出现只包含空白符的行时,分词模块就会出错。

修改XML4NLP::CreateDOM时的做法,在BuildParagraph之前,将每一行的句首及句尾的空白符全部去掉。


v1.3.4
+++++***+++++
2007-11-21
王丽杰对xsl文件进行更新

2007-11-22
郭宇航找到一个bug
藩 的第二个字节是 '['
Parser中:Extract()字符串处理时,没有考虑这个问题。
修改后的dll已经在网站上更新。

2007-11-22
Parser中:
parser_dll_x.cpp中
void Parse(vector < string >& vecWord, vector < string >& vecPOS, vector < pair<int,string> >& vecParse)
中
原来为:
	char * csOutput = new char[vecWord.size() * 50];
现在改为:
	int i = 0;
	for (; i < vecWord.size(); ++i) {
		nChar += strlen(vecWord[i].c_str());
	}
	char * csOutput = new char[nChar * 2 + vecWord.size() * 32];
因为有的时候会输入:
"------------------------------------"或者很长的数字串,这样会造成内存越界问题。


2007-11-22
SDS中:
void SDS_TS::SelectSnt()
定义:
	unsigned sntNum;
但是后面用到:
							sntNum = m_vctSntPairs_Score[summarySntNum].m_nSntNum - 1;
							if(sntNum >= 0) {
								...
							}		
此时当
m_vctSntPairs_Score[summarySntNum].m_nSntNum == 0时:
sntNum = 0xFFFF;

2007-11-22
NER NERtestDll_x.cpp中:
	char* presult = new char[5000];
当句子过长的时候,会出现内存越界。修改为:
	int nChar = 0;
	for (int i=0; i<(int)vecWord.size(); ++i)	{
		nChar += vecWord[i].size();
	}
	const int SZ = nChar + vecWord.size() * 10;
	char* presult = new char[SZ];

2007-11-22
Parser中,由于分句模块分出的句子太长

考虑将分句模块的句长减小,由
#define POLARIS_SENTENCE_LENGTH 0xFFFF
变为:
#define POLARIS_SENTENCE_LENGTH 0x1024

这样一句话最多约为500个汉字。和原来一样。


2007-11-23
Parser MyLib.cpp中:
string itos(int i);
	char buf[4];
太小了。
当i >= 1000时,便会发生异常。改为:
	char buf[256];

同时我对Parser中
void GetParseResults(vector < string >& vecWord, vector < string >& vecPOS, char * strOutput)
的代码进行了优化。

2007-11-23
王丽杰 nlp_style.xsl中
action = "Try.py"
改为
action = "ltp_v1.3_start.py"


2007-12-1
NER模块更新,使用最大熵模型(付瑞吉)

SRL模块更新使用最大熵模型(胡禹轩)

SRL:(Release)
	加载数据资源数据,约15秒
	处理13K文件需要25秒
	
SRL还有一个bug,ARG范围(beg end)重叠overlapped
让王丽杰修改xsl文件,绕过这个bug。


2007-12-2
LTP升级为v1.4.0包括网站程序

2007-12-3
王丽杰修改xsl文件,完善句法分析按句子显示时不能自动break的问题。

xsl文件有一处需要改动一下,在“按句子显示”的“句法分析”下面定义的table,
body +='<table style="border: SOLID 0px black;word-break:break-all;" bgcolor="black" width="'+ widthTable +'" cellpadding="0" cellspacing="1">';
红色为新加入的,否则对于英文,table不会自动换行的,使得句法分析树有些错乱。

例句:参数errcode是来自函数regcomp()或regexec()的错误代码,而参数preg则是由函数regcomp()得到的编译结果,其目的是把格式化消息所必须的上下文提供给regerror()函数。在执行函数regerror()时,将按照参数errbuf_size指明的最大字节数,在errbuf缓冲区中填入格式化后的错误信息,同时返回错误信息的长度。

NER的Bug:

IRLAS的结果中可能会出现类似:
也/d 是/v 国内/nl SVM/ws 最好/d 的/u 学者/n 之/u 
一  /m 4/m 、/wp 数据/n 挖掘/v 中/nd 的/u 新/a 方法/n :/wp 

一  /m
:/wp
"/"前有空格。这样NE在内部处理的时候没有考虑到这个情况。

也可以认为是IRLAS的bug。

修改了IRLAS_DLL_x.cpp文件,将分词结果中每个词中包含的' '去掉。

修改NER_DLL_x.cpp文件,修改了从
也/d#O 是/v#O 国内/nl#O SVM/ws#O 最好/d#O 
抽取结果的方式。
NEReg的返回值由void变为int,相应LTP.cpp中调用NEReg函数时也有所变化。

2007-12-3
胡禹轩修改了srl中overlapped的bug

上午修改IRLAS_DLL_x.cpp的时候使用到了MyLib.cpp。
但是ltp中有很多MyLib.cpp
如:
_irlas/MyLib.cpp
__util/MyLib.cpp
_parser/MyLib.cpp
等,现在还没有统一。
我简单的将_irlas/MyLib.cpp替换__util/MyLib.cpp,导致出现了新的bug。
因为_irlas/MyLib.cpp和__util/MyLib.cpp中convert_to_pair的实现不相同。
	完成功能是:、/wp => [、][wp]
_irlas/MyLib.cpp中的实现是错误的。

修订了这个bug。更新一下v1.4.1

2007-12-6
王丽杰修改xsl,显示srl的语义框架,采用绝对路径。这样给用户共享的xsl通过从服务器download文件,显示语义框架。
王丽杰修改了关于srl显示的bug。

2007-12-8
王丽杰修改xsl显示,使ARG等显示居中。
胡禹轩修改DepSRL.h DepSRL.cpp
	Arg的名字过长也影响美观,请禹轩输出的时候修改一下吧,ARG0->A0,ARGM-ADV->AM-ADV等等。

2007-12-28
Parser_dll.h中原来的宏定义有问题。
修改为:
#ifdef _WIN32 	
	#undef PARSER_DLL_API
	#ifdef PARSER_DLL_API_EXPORT
		#define PARSER_DLL_API extern "C" _declspec(dllexport) 
	#else
		#define PARSER_DLL_API extern "C" _declspec(dllimport)
	#endif
#endif


Parser增加接口Parse_with_postag()
这个接口直接提供词性细分类,parse预处理时再词性细分类了。


2008-1-11
Parser中Parser.cpp
中
float CParser::Smoothen(float ftd, float ftt, float ftttt, float ftw, float fwt, float fww)
中增加:
	if (fProb <= 0.00000001) fProb = 0.00000001;
否则存在log(0)隐患。


2008-1-21
根据公司合同,修改了各个底层模块的接口(除CR外)。


2008-1-24
修改了各个xxx_DLL.h中的宏定义

2008-1-29
将CR更新为我本科时做的基于规则的方法。

2008-2-22
付瑞吉修改NE模块中的一个bug,越界等

2008-4-23
准备将srl更新为最新版本,出现问题,“摘要:”及“(”
发现可视化程序的一个小bug:“摘要:”

2008-4-24
胡禹轩修改了srl的bug

可视化程序的bug没有修改,原因是按句子显示的时候没有EOS节点。暂时不考虑了。


升级LTP至1.4.3


About

Language Technology Platform

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 80.5%
  • C 16.4%
  • CMake 1.9%
  • Python 1.1%
  • Other 0.1%