如何根据语义合并字典?

从 pdf 财务报表中解包出来了一些数据,经过处理,格式上仍存在一些问题。

report_list = [
    {'index': '处置固定资产、无形资产和其'}, 
    {'index': '他长期资产收回的现金净额', 'bqje': '15,000.00 3,800.00'},
    {'index': '金'}, 
    {'index': '收到其他与筹资活动有关的现', 'bqje': '14,691,042.80'} 
    ]

想达到的效果是:

report_list = [
    {'index': '处置固定资产、无形资产和其他长期资产收回的现金净额', 'bqje': '15,000.00 3,800.00'},
    {'index': '收到其他与筹资活动有关的现金', 'bqje': '14,691,042.80'}
    ]

上述列表中:

1、report_list[0], report_list[1] 语义上看,index 本来是一个,但被解析成了两个。
2、report_list[2], report_list[3] 语义上看,index 本来是一个,而且顺序发生了错误。

有没有类似的语言包? 或者自己定义一个 key 该如何进行处理?

阅读 1.9k
1 个回答

处理后的顺序信息已经丢失了,如果只是词语中间截断还可以合并,
但是如果截断后是语义仍是完整的话,顺序就不那么好处理了。

解决方法:
优先考虑从解包的时候保留这个顺序信息。
合并过程,以bqje作为项分割点,拼接新字符串(正反顺序都有)
然后利用规则计算最优的字符串。规则比如说,利用jieba分词计算新字符串分词后的词个数。
正确顺序的一般分词数少于错误的顺序的字符串的分词数(错误字符串里分词会出现断裂区的单字词)

如:
他1 长期2 资产3 收回4 的5 现金6 净额7 处置8 固定资产9 、10 无形资产11 和12 其13
处置1 固定资产2 、3 无形资产4 和5 其他6 长期7 资产8 收回9 的10 现金11 净额12

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏