[
哪个地方做什么的哪家靠谱?
地名词库
行业、业务词库
]
苏州做网络推广的公司哪家靠谱?
苏州镭射机维修哪家最专业?
昆山做账的公司哪家比较好
广州称重灌装机生产厂家哪家口碑比较好 [
含有专家知识
]
郑州律师哪个好,如何判断合同是否有效? [
哪个地方有做什么的?
]
广东哪里有专业的全铝书柜定制?
苏州吴中越溪哪里有通过率较高的会计培训班? [
2-gram
] 行业 属性 通过 “2-gram”实现,“动词+名词” 昆山注册公司哪家专业?
注册公司 {'words': '大型\t雕铣机\t哪个\t牌子\t好\t?', 'postags': 'b\tn\tr\tn\ta\twp', 'parser': '2:ATT\t4:ATT\t4:ATT\t5:SBV\t0:HED\t5:WP', 'netags': 'O\tO\tO\tO\tO\tO', 'role': [{4: 'A0:(0,3)'}]}
feature ATT SBV HED 相邻 {'words': '深圳市\t东荣\t纯水\t设备\t有限公司\t有\t什么\t产品\t,\t电话\t是\t多少\t?', 'postags': 'ns\tnz\tn\tn\tn\tv\tr\tn\twp\tn\tv\tr\twp', 'parser': '5:ATT\t3:ATT\t4:ATT\t5:ATT\t6:SBV\t0:HED\t8:ATT\t6:VOB\t6:WP\t11:SBV\t6:COO\t11:VOB\t6:WP', 'netags': 'B-Ni\tI-Ni\tI-Ni\tI-Ni\tE-Ni\tO\tO\tO\tO\tO\tO\tO\tO', 'role': [{5: 'A0:(0,4)\tA1:(6,7)'}, {10: 'A0:(9,9)\tA1:(11,11)'}]} feature [[正规|靠谱]|便宜|价格优惠|价格低]公司 含有ns
{'words': '武汉\t哪里\t有\t织发补发店\t?', 'postags': 'ns\tr\tv\tn\twp', 'parser': '3:SBV\t3:SBV\t0:HED\t3:VOB\t3:WP', 'netags': 'S-Ns\tO\tO\tO\tO', 'role': [{2: 'A0:(0,0)\tA0:(1,1)\tA1:(3,3)'}]} 地点-[哪里有做]-业务-[的][正规|靠谱]-公司? {'words': '江西\t塑料\t厂家\t有\t哪些\t?', 'postags': 'ns\tn\tn\tv\tr\twp', 'parser': '3:ATT\t3:ATT\t4:SBV\t0:HED\t4:VOB\t4:WP', 'netags': 'S-Ns\tO\tO\tO\tO\tO', 'role': [{'3': 'A0:(0,2)\tA1:(4,4)'}]}
地点-[做]-业务-[的][正规|靠谱]-公司[有哪些]? {'words': '龙江\t附近\t金色\t年华\t教育\t中心\t到底\t怎么样\t?', 'postags': 'ns\tnd\tn\tn\tv\tn\tv\tr\twp', 'parser': '2:ATT\t6:ATT\t4:ATT\t6:ATT\t6:ATT\t7:SBV\t0:HED\t7:VOB\t7:WP', 'netags': 'S-Ns\tO\tO\tO\tO\tO\tO\tO\tO', 'role': [{6: 'A0:(0,5)\tA1:(7,7)'}]} 地点-业务-[靠谱吗?到底怎样?] {'words': '南充\t最\t好\t的\t化妆\t学校\t是\t哪家\t?', 'postags': 'ns\td\ta\tu\tv\tn\tv\tr\twp', 'parser': '6:ATT\t3:ADV\t6:ATT\t3:RAD\t6:ATT\t7:SBV\t0:HED\t7:VOB\t7:WP', 'netags': 'S-Ns\tO\tO\tO\tO\tO\tO\tO\tO', 'role': [{'2': 'ADV:(1,1)'}, {'6': 'A0:(0,5)\tA1:(7,7)'}]} 地点-[最好的|靠谱的]业务-[是哪家?] {'words': '昆山\t铣刀\t厂家\t联系\t方式\t是\t多少\t?', 'postags': 'ns\tn\tn\tv\tn\tv\tr\twp', 'parser': '3:ATT\t3:ATT\t5:ATT\t5:ATT\t6:SBV\t0:HED\t6:VOB\t6:WP', 'netags': 'S-Ns\tO\tO\tO\tO\tO\tO\tO', 'role': [{'5': 'A1:(6,6)'}]} 地点-[做]-业务-[的][正规|靠谱]-公司[的联系方式是什么?|哪家口碑好值得信赖?] {'words': '苏州\t装修\t别墅\t怎么\t能\t省\t钱\t?', 'postags': 'ns\tv\tn\tr\tv\tv\tn\twp', 'parser': '3:ATT\t3:ATT\t6:SBV\t6:ADV\t6:ADV\t0:HED\t6:VOB\t6:WP', 'netags': 'S-Ns\tO\tO\tO\tO\tO\tO\tO', 'role': [{'5': 'A0:(0,2)\tADV:(3,3)\tA1:(6,6)'}]} 地点-[做]-业务-[怎么能省钱?|费用是多少?|需要注意什么?|有哪些流程?]
from pyltp import *
import os
import re
import json d_dir = '/usr/local/ltp_data_v3.4.0/' segmentor = Segmentor()
s = '%s%s' % (d_dir, "cws.model")
segmentor.load(s) postagger = Postagger()
s = '%s%s' % (d_dir, "pos.model")
postagger.load(s) parser = Parser()
s = '%s%s' % (d_dir, "parser.model")
parser.load(s) recognizer = NamedEntityRecognizer()
s = '%s%s' % (d_dir, "ner.model")
recognizer.load(s) labeller = SementicRoleLabeller()
s = '%s%s' % ('/usr/local/ltp_data_v3.3.0/ltp_data/srl/', '')
labeller.load(s) def gen_all(paragraph, split_join_tag='\t'):
r = {}
# 分词 其他分析依赖于该数据
sentence = SentenceSplitter.split(paragraph)[0]
# segmentor = Segmentor()
# s = '%s%s' % (d_dir, "cws.model")
# segmentor.load(s)
words = segmentor.segment(sentence)
r['words'] = split_join_tag.join(words)
# print("\t".join(words)) # 词性标注
# postagger = Postagger()
# s = '%s%s' % (d_dir, "pos.model")
# postagger.load(s)
postags = postagger.postag(words)
r['postags'] = split_join_tag.join(postags)
# print("\t".join(postags)) # 依存句法关系
# parser = Parser()
# s = '%s%s' % (d_dir, "parser.model")
# parser.load(s)
arcs = parser.parse(words, postags)
r['parser'] = split_join_tag.join("%d:%s" % (arc.head, arc.relation) for arc in arcs)
# print("\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs)) # 命名实体识别
# recognizer = NamedEntityRecognizer()
# s = '%s%s' % (d_dir, "ner.model")
# recognizer.load(s)
netags = recognizer.recognize(words, postags)
r['netags'] = split_join_tag.join(netags)
# print("\t".join(netags)) # 语义角色类型 # labeller = SementicRoleLabeller()
# s = '%s%s' % ('/usr/local/ltp_data_v3.3.0/ltp_data/srl/', '')
# labeller.load(s)
roles = labeller.label(words, postags, netags, arcs) r['role'] = []
for role in roles:
d = {}
d[role.index] = split_join_tag.join(
["%s:(%d,%d)" % (arg.name, arg.range.start, arg.range.end) for arg in role.arguments])
# print(role.index, "".join(
# ["%s:(%d,%d)" % (arg.name, arg.range.start, arg.range.end) for arg in role.arguments]))
r['role'].append(d) return r ori_f = 'list_b_only_title.txt'
r_f = '%s%s' % (ori_f, '.run.txt')
with open(r_f, 'w', encoding='utf-8') as fow:
with open(ori_f, 'r', encoding='utf8') as fo:
for i in fo:
p = i.replace('\n', '').replace('"', '')
try:
a = gen_all(p)
except Exception as e:
print(p, ' ', e)
continue
ws = '%s%s' % (json.dumps(a, ensure_ascii=False), '\n')
fow.write(ws)
segmentor.release()
postagger.release()
parser.release()
recognizer.release()
labeller.release() 时间占比
特征提取(话术 句术 文本陈述方式 词组织/搭配方式 方式 文法 语义 ) 写正则表达式
import re
import json ori_f = 'list_b_only_title.txt'
r_f = '%s%s' % (ori_f, '.run.txt')
# {'words': '昆山\t注册\t公司\t找\t哪家\t比较\t好\t?', 'postags': 'ns\tv\tn\tv\tr\td\ta\twp', 'parser': '3:ATT\t3:ATT\t4:SBV\t0:HED\t4:VOB\t7:ADV\t4:CMP\t4:WP', 'netags': 'B-Ni\tI-Ni\tE-Ni\tO\tO\tO\tO\tO', 'role': [{3: 'A0:(0,2)\tA1:(4,4)'}, {6: 'A0:(0,2)\tADV:(5,5)'}]}
select_l = []
reg_l = ['ATT\\t\d+:SBV\\t\d+:HED\\t\d+:VOB\\t\d+']
reg_l = ['HED\\t\d+:VOB\\t\d+:WP']
reg_l = ['HED\\t\d+:VOB\\t\d+:(WP|ADV\\t\d+:CMP)']
c = 0
with open(r_f, 'r', encoding='utf-8') as fowr:
for iii in fowr:
a = json.loads(iii)
a_postags = a['postags']
if 'ns' not in a_postags:
continue
for ii in reg_l:
a_parser = a['parser']
if re.compile(ii).search(a_parser) is not None:
select_l.append(a)
if c == 30:
break
dd = 9


"""
地点-哪里有做-业务-的(正规|靠谱)-公司?
地点-做-业务-的(正规|靠谱)-公司(有哪些?|的联系方式是什么?|哪家口碑好值得信赖?)
地点-做-业务-(怎么能省钱?|费用是多少?|需要注意什么?|有哪些流程?)
地点-业务-(靠谱吗?到底怎样?)
地点-(最好的|靠谱的)业务-是哪家? """
p, b = '深圳市', ['广告设计', '网络推广'] ltp_model = ['地点-哪里有做-业务-的(正规|靠谱)-公司?', '地点-做-业务-的(正规|靠谱)-公司(有哪些|的联系方式是什么|哪家口碑好值得信赖)?',
'地点-做-业务-(怎么能省钱|费用是多少|需要注意什么|有哪些流程|靠谱吗|到底怎样)?', '地点-(最好的|靠谱的)业务-是哪家?']
r_l = []
for s in ltp_model:
s = s.replace('地点', p).replace('-', '')
for i in b:
r_l.append(s.replace('业务', i)) def deal_first_splittag_str(i):
s_l_1 = []
psl, psr = i.find('(', ), i.find(')', )
sl, sm, sr = i[:psl], i[psl + :psr], i[psr + :]
l = sm.split('|')
for ii in l:
s_l_1.append('%s%s%s' % (sl, ii, sr))
return s_l_1 def deal_first_splittag(s_l_0):
s_l_1 = []
for i in s_l_0:
psl, psr = i.find('(', ), i.find(')', )
if psl == -:
s_l_1.append(i)
else:
sl, sm, sr = i[:psl], i[psl + :psr], i[psr + :]
l = sm.split('|')
for ii in l:
s_l_1.append('%s%s%s' % (sl, ii, sr))
return s_l_1 while True:
f =
for i in r_l:
if '(' in i:
f =
del r_l[r_l.index(i)]
l = deal_first_splittag_str(i)
r_l += l
if f == :
break d =


借助ltp 逐步程序化实现规则库 文本生成引擎基于规则库和业务词库 去生成文本的更多相关文章

  1. Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式

    Python生成文本格式的excel\xlwt生成文本格式的excel\Python设置excel单元格格式为文本\Python excel xlwt 文本格式 解决: xlwt 中设置单元格样式主要 ...

  2. R语言︱词典型情感分析文本操作技巧汇总(打标签、词典与数据匹配等)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:情感分析中对文本处理的数据的小技巧要 ...

  3. FreemarkerJavaDemo【Android将表单数据生成Word文档的方案之一(基于freemarker2.3.28,只能java生成)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个方案只能在java中运行,无法在Android项目中运行.所以此方案是:APP将表单数据发送给后台,后台通过freemarker ...

  4. captcha.js一个生成验证码的插件,使用js和canvas生成

    一.captcha`captcha.js`是一个生成验证码的插件,使用js和canvas生成的,确保后端服务被暴力攻击,简单判断人机以及系统的安全性,体积小,功能多,支持配置. 验证码插件内容,包含1 ...

  5. Python 爬取 热词并进行分类数据分析-[热词分类+目录生成]

    日期:2020.02.04 博客期:143 星期二   [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[ ...

  6. 手把手教你基于SqlSugar4编写一个可视化代码生成器(生成实体,以SqlServer为例,文末附源码)

    在开发过程中免不了创建实体类,字段少的表可以手动编写,但是字段多还用手动创建的话不免有些浪费时间,假如一张表有100多个字段,手写有些不现实. 这时我们会借助一些工具,如:动软代码生成器.各种ORM框 ...

  7. AIDL和生成的java文件要分开存放,否则生成can't find symbol class

    Android 5.0之后需要AIDL和生成的java文件要分开存放,否则生成can't fin symbol class.但是4.3没有这个限制.被这个弄了一天,跟老大讨论了一下才豁然开朗.

  8. linux静态库的生成与使用(转)

    linux静态库的生成与使用(转) 库是一种软件组件技术,库里面封装了数据和函数. 库的使用可以使程序模块化. Windows系统包括静态链接库(.lib文件)和动态链接库(.dll文件). Linu ...

  9. QT中静态库的生成与使用

    一. 静态库的生成    1. 测试目录: lib    2. 源码文件名: mywindow.h, mywindow.cpp, 类MyWindow继承于QPushButton, 并将文字设置为&qu ...

随机推荐

  1. Django框架基础知识13-auth系统

    我们昨天登录admin时创建的用户信息是存放在哪里了呢? auth系统的数据表: 从表的名称我们就能看出, auth_user,auth_group,auth_permission分别存放了用户,用户 ...

  2. shiro框架的四中权限控制方式

    https://www.cnblogs.com/cocosili/p/7103025.html 一.在自定义的realm中进行权限控制 在applicationContext.xml文件中添加  /a ...

  3. 【转】Quartz.NET

    原文链接:http://www.cnblogs.com/tommyli/archive/2009/02/09/1386644.html Quartz.NET是一个开源的作业调度框架,是OpenSymp ...

  4. Leetcode 312.戳气球

    戳气球 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * n ...

  5. 从Excel中读取数据(python-xlrd)

    从Excel中读取数据(python-xlrd) 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls ...

  6. HDU 3264 区间内的最大最小之差

    题目链接:http://poj.org/problem?id=3264 题目大意:在给定一堆牛的数量以及其高度的时候,每次给定一段区间,求这个区间内最高的牛和最矮的牛的高度之差为多少. 可以直接利用R ...

  7. 海战(洛谷 P1331)

    题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防海军部仅有很少的几 ...

  8. 【BZOJ2560】串珠子(状压DP,容斥原理)

    题意: 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体.现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者在 ...

  9. typeof、constructor和instanceof

    在JavaScript中,我们经常使用typeof来判断一个变量的类型,使用格式为:typeof(data)或typeof data.typeof返回的数据类型有六种:number.string.bo ...

  10. SOJ 4482 忽悠大神【最小生成树】

    题目链接: http://acm.scu.edu.cn/soj/problem.action?id=4482 题意: 给定边权和点权,从一个点出发并回到该点,减少尽量多的边,每路过点和边都要把权重加到 ...