Skip to content

guoxinrun/aliyun-FDDC-2018-Financial-Challenge-

 
 

Repository files navigation

aliyun-FDDC-2018-Financial-Challenge-

这是天池FDDC竞赛的一个小尝试,两个赛题,针对文本抽取的赛题,尝试使用深度学习双向LSTM加attention。

[^。|法律|承诺]+交易对方[^。|法律|承诺]+。

先在ltp分词之前把相关的实体掩蔽,做成token,token包括了“收益法”“市场法”“xxx元”,每一个token对应的json文件k-v键,词向量提取的时候,token的输入是一个token代码,输出端是五六项应有的训练results,当有正确的results出现的时候,也就是说当token编码对应的V值是results里面的结果时,输出就是把token

先定义估值法/金额这些token,用正则提取。 实体从文本中切出,用切片的方法,把原来的长文本分成一段段的链表,其中 比如说: abcdefghijklmn 其中实体:de lm
那么先提取: abc de fghijk lm n 0 1 2 3 4 分词: abc -> ab c list_a= [abc, de , fghijk, lm , n] [[ab,c] , de , [fg,hi,jk],lm,[n]]

   '畚犇'.join(list_a)
   
  
  每一个实体都是使用正则表达式从原文本中提取出来的,在分词的时候这些实体是免于被切分。这些实体可能对应某个正确答案,那么标注为那个序列号,如果这个单独连贯的词或短语是in正确答案的string(使用特殊字分隔),那么使用最小遍历法,向下寻找完整的答案键值,将从此个单元向下到键值结尾长度的凭借起来,如果符合就打标,比如N个都打上1的标。如果向下加载多一个单元,就不in正确答案,那么就跳过不标。这样连续N个单元加载,在N-1个单元的时候都是in的,而在第N个不in了,那么比较这N-1个in不in正确答案的list,如果in,那么将list的序列标在这N-1个单元后面。
  
  思路2: 使用正则,尽量用正则来完成。首先把entity_list里面的实体
        正文convert2text之后,分词,分词结果要标注的。怎么标注。就是把文本文字映射成一行行的词和对应的tag,tag看的是这个词或者实体(金额/机构名称/标的/估值方法等等),是不是正确答案里面的,不是就标注o,是就标注对应的序号就可以了。
        首先正则找出来文本中的实体,并且把实体中间的空格去掉,可以用re.sub(r'[{}\s]'.format(实体),'{}'.format(实体),texx)
        
        
        In [18]: re.findall(r'(?=a)\s?s\s?d\s?f\s?a\s?s\s?d\s?f\s?','','as df a s d f')

        
官方在train res中有一些是简称/全称混淆了,在制作序列的时候,应该把简称/全称都算进去,也就是entity list中->符号左右的内容,扩充train——res,更改一下。

secnames_dicts = re.findall(r'[\s\n][\u4e00-\u9fcc,a-zA-Z.、/]+[\s\n]+指[\s\n]+[\u4e00-\u9fcc,a-zA-Z.、/]+[\s\n]+')

在官方给的josn里面有个bug,皖维股份\u007F,有一些简称后面带了个unicod码,

市场法、重置成本法|市场法|成本法|资产基础法、市场比较法|收益现值法|成本加和法|折现现金流量法|内含价值调整法|市场法、收益法|资产基础法、市场法|成本法、收益法|可比公司市净率法|收益法、重置成本法|成本发、市场法、收益法|收益法、资产基础法|成本加和法、收益现值法|重置成本法|单项资产加和法|成本逼近法|收益法、市场法|资产基础法、收益法|市场比较法、成本逼近法|收益现值法、成本加和法|收益现值法、资产基础法|单项资产加总法|收益法|假设清偿法|收益法、市场比较法|收益还原法|现金流量法|收益法、基础资产法|现金流折现法|市场比较法|收益法、成本法|重置成本法、市场比较法|市场比较法、收益法|收益现值法、重置成本法|资产基础法、成本法|成本法、市场法、收益法|基准地价修正法、市场比较法|估值法|成本法、市场法|成本逼近法、市场比较法|基础资产法|资产基础法

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 39.4%
  • HTML 31.7%
  • Jupyter Notebook 28.9%