利用位置特征或者历史数据,提取最相似一个或者多个句子

目标是从一篇招投标文章中识别出建筑面积的句子,甚至能估计这个,建筑面积的实际成本(目前不可能)。利用位置特征或者历史数据,提取最相似一个或者多个句子。

比如想从招投标文件中提取建筑面积字段。

建筑面积分词举例。

新建, 小, 区内, 篮球, 球场, 篮球场, 、, 羽毛, 球场, 羽毛球, 羽毛球场, 660, 平方, 平方米, ,, 硬化, 小区, 主干, 干线, 主干线, 3165, 平方, 平方米, ,, 透水, 砖, 铺筑, 人行, 行道, 人行道, 3165, 平方, 平方米, ,, 路缘石, 230, 米, ,, 修建, 垃圾, 垃圾站, 240, 平方, 平方米, ,, 建设, 小区, 安防, 设施, 等
陕西, 陕西省, 汉中, 汉中市, 2022, 年, 普通, 干线, 公路, 大中, 修及, 预防, 预防性, 养护, 工程, (, 第二, 二批, 第二批, ), 主要, 涉及, 6, 段, 累计, 全长, 74.252, 公里, 。, 按, 工程, 性质, 分为, 三类, 其中, 预防, 预防性, 补板, 工程, 涉及, 3, 段, ,, 分别, 为, G108, 线, K1614, +, 700, ~, K1631, +, 560, 、, K1631, +, 560, ~, K1646, +, 580, 、, K1612, +, 200, ~, K1614, +, 000, ,, 累计, 全长, 33.68, 公里, 大中, 大中修, 工程, 涉及, 2, 段, ,, 分别, 为, G108, 线, K1787, +, 800, ~, K1792, +, 720, 和, G316, 线, K2201, +, 200, ~, K2212, +, 300, ,, 累计, 全长, 16.02, 公里, 预防, 预防性, 精细, 细化, 精细化, 表处, 工程, 涉及, 1, 段, ,, 为, G210, 线, K1660, +, 040, ~, K1686, +, 850, ,, 全长, 26.352, 公里, 。,
新建, 游客, 服务, 中心, 服务中心, 198, 平方, 平方米, ,, 卫生, 卫生间, 2, 处, 36.8, 平方, 平方米, (, 单个, 18.4, 平方, 平方米, ), 道路, 、, 停车, 区, 5098.6, 平方, 平方米, ,, 其中, 房车, 位, 14, 个, ,, 普通, 停车, 车位, 停车位, 61, 个, 游客, 中心, 前, 平台, 201.88, 平方, 平方米, ,, 休闲, 广场, 1782.69, 平方, 平方米, ,, 儿童, 游乐, 游乐区, 717.21, 平方, 平方米, 帐篷, 宿营, 木, 平台, 894.88, 平方, 平方米, ,, (, 帐篷, 营位, 37, 个, ,, 营位, 5, 个, ), 栏杆, 475, 米, ,, 护坡, 425, 米, 绿化, 工程, 9483.21, 平方, 平方米, ,, 银杏, 14, 株, ,, 香樟, 107, 株, ,, 丹桂, 47, 株, ,, 玉兰, 广玉兰, 63, 株, ,, 红叶, 李, 71, 株, ,, 樱花, 69, 株, ,, 垂丝, 海棠, 24, 株, ,, 高杆, 石楠, 24, 株, ,, 红枫, 38, 株, 景观, 小品, 、, 雕塑, 6, 组, ,, 景观, 座椅, 24, 个, ,, 垃圾, 垃圾桶, 18, 个, 实施, 水电, 、, 导视, 标识, 及, 配套, 设施, 。

评估方法

import difflib
# def_in_df 数据框,ziduan 字符串,ziduandef 函数(输入字符串,输出字典,字典值为值非列表)),cutoff_def 数值)
def test(def_in_df,ziduan,ziduandef,cutoff_def):
    len_num=len(def_in_df["content"])
    num=0
    num1=0
    for i in range(len_num):
        try:
            test_value=ziduandef(def_in_df["content"][i])
            if len(test_value)==0:
                print("匹配不到")
                print(i)
                num+=1
            elif difflib.get_close_matches(test_value[ziduan],[def_in_df[ziduan][i]],1, cutoff=cutoff_def)!=[def_in_df[ziduan][i]]:#cutoff=0.9说明高度匹配
                print("匹配错误")
                print(i)
                num1+=1
        except:
            print("报错")
            print(i)
    rate="匹配不到占所有样本比率"+str(num/len_num)
    rate1="匹配错误占所有样本比率"+str(num1/len_num)
    return rate,rate1

方法1 基于文章中该句子的规则,用正则表达式的方法提取。

匹配不到占的所有样本比率0.08064516129032258’, ‘匹配错误占所有样本比率0.019794721407624633’

def buildingArea_def(string1):
    Area_item_dict={}
    if '规模' in string1:
        if 'buildingArea' in Area_item_dict and Area_item_dict['buildingArea']:
            pass
        else:
            try:
                Area_item_dict['buildingArea'] = re.findall(r"规模:(.*?)等",string1)#string1.split('规模:')[1].replace(':', '').replace(':', '').replace(';', '').split("。\n")[0]
                if len(Area_item_dict['buildingArea'])==0:
                    Area_item_dict['buildingArea'] = re.findall(r"规模:(.*?)。",string1)
                    if len(Area_item_dict['buildingArea'])==0:
#                         print("11")
                        Area_item_dict['buildingArea'] = re.findall(r"规模:(.*?)\n\xa0",string1)
                Area_item_dict['buildingArea']=Area_item_dict['buildingArea'][0].replace(':', '').replace(':', '').replace(';', '').replace('#', '')
                
            except IndexError as i:
                pass

2 用句子相似度的深度学习模型,基于句子特征提取,类似人脸特征提取。如何在茫茫句海找到对应的句子?

3 用基于距离的方法,余弦相似度计算文本相似度。在全文找到和这类句子最相似一个或者多个的句子。

4 用基于词性标注。这段文字有大量的名词,量词,而其他句子没有。

法一 使用ERNIE-UIE 2.0

技术原理
ERNIE-UIE 2.0 技术方案是,将各种类型的信息抽取任务统一转化为自然语言的形式,并进行多任务联合训练,进而支持零样本信息抽取。模型的输入是待抽取文本(content)和自然语言描述的抽取目标(prompt),prompt 通常建议的结构为“A 的 B”或“B”的形式,如下例子:

content:出租方:小明 地址:筒子街12号 电话:12345678900 承租方:小红 地址:新华路8号 电话:18345678901
prompt:地址
result:筒子街12号,新华路8号
content:出租方:小明 地址:筒子街12号 电话:12345678900 承租方:小红 地址:新华路8号 电话:18345678901
prompt:小明的地址
result:筒子街12号\

GTP3的信息抽取
https://beta.openai.com/examples
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值