ChatGLM警情识别实战(二)

脱敏方案——tokenizer测试

上期讲到确定了数据脱敏方案,但是还未测试可行性,本期在hugging face上用bert-base-chinese模型测试数据脱敏

bert-base-chinese作用

一图就懂
在这里插入图片描述
注意:下载模型前,要看好自己是要下载哪个模型,基本的模型有:bert-base-chinese(不包含词的训练的),chinese-bert-wwm(包含词的训练)。另外还有robert、electra等模型,所以使用之前需要先明白自己要使用哪个模型。这个版本(bert-base-chinese)是专为中文训练的,更适合中国宝宝体质。

bert-base-chinese使用

首先确定环境已经安装了transformer,否则需要安装

pip install transformers

然后输入以下代码

# Load model directly
from transformers import AutoTokenizer, AutoModelForMaskedLM

tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
model = AutoModelForMaskedLM.from_pretrained("bert-base-chinese")

模型默认会下载到本地路径C:\Users\.cache\huggingface\hub\models--bert-base-chinese下,也可以通过dir指定下载路径。注意:如果指定下载路径,调用的时候也需要指定路径

from transformers import AutoTokenizer
model_path = '/app/nlp_env/bert/model_cache/chatglm2-6b-int4/'
tokenizer = AutoTokenizer.from_pretrained(model_path,trust_remote_code=True)

下载好之后就可以使用了

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
sen = "弱小的我也有大梦想450104"
encode = tokenizer.encode(sen)
print(encode)
decode = tokenizer.decode(encode)
print(decode)

batch_sentences = ["弱小的我也有大梦想450104",
                   "今天天气很好",
                   "出去走走吗"]
encoded_inputs = tokenizer(batch_sentences, padding=True, truncation=True, return_tensors="pt")
# text: 需要被编码的文本,可以是一维或二维list
# padding: 是否需要padding,可选如下几个值
#   True or 'longest',padding到一个batch中最长序列的长度
#   'max_length', padding到由max_length参数指定的长度,如果没有指定max_length则padding到模型所能接受的最大长度
#   False or 'do_not_pad', 不进行padding
# truncation: 是否要进行截断
#   True or 'longest_first',保留由max_length指定的长度,或者当max_length没有指定时,截取保留模型最大能接受的长度,对于sentence pair,截取长度最大的句子
#   False or 'do_not_truncate (default) 不截取
#   only_first,截取到max_length, 但是只截取sentence pair中的第一个句子
#   'only_second',同理,只截取pair中第二个句子
# max_length,句子最大长度,和padding及truncation相关
# is_split_into_words 输入的句子是否已经分词好了,比如已经用空格分隔开
# return_tensors 返回类型,默认是list类型,可选pt返回torch 的 tensor,tf返回tensorflow的tensor, npnumpy类型
# return_length,是否返回编码的序列长度,default=False
print(encoded_inputs)
print(tokenizer.batch_decode(encoded_inputs["input_ids"]))
# [CLS]:[CLS]标记表示"Classification",通常用于表示一个文本序列的开始。在许多模型中,[CLS]标记作为句子或文本的起始标记,用于对整个序列进行分类或表示整个句子的特征。
# [SEP]:[SEP]标记表示"Separator",用于分隔不同的句子或文本段落。在处理多个句子的任务(如句子对分类、文本生成等)时,[SEP]标记可以用来明确分隔不同句子之间的边界。
# [PAD]:[PAD]标记表示"Padding",用于填充序列以使其具有相同的长度。在许多深度学习模型中,要求输入序列具有相同的长度,因此较短的序列需要进行填充。[PAD]标记通常用于填充短序列的末尾,以与其他序列对齐。

在这里插入图片描述
结果所示,同时经过比对其他方案,该方案最合适数据脱敏任务,因此脱敏方案选定,需要注意的是每个模型的词表是不一样的,都有模型自身对应的词表,也可以自己训练自己的词表,以下提供其中一个方法

import jieba

def build_vocab(texts):
    vocab = {}
    for text in texts:
        words = process_text(text)
        for word in words:
            if word not in vocab:
                vocab[word] = len(vocab)
    return vocab

def convert_text_to_sequence(text, vocab):
    words = process_text(text)
    sequence = []
    for word in words:
        if word in vocab:
            sequence.append(vocab[word])
    return sequence

def convert_sequence_to_text(sequence, vocab):
    words = [word for word, index in vocab.items() if index in sequence]
    text = "".join(words)
    return text

def process_text(text):
    processed_words = []
    for char in text:
        if char.isdigit():
            processed_words.extend(list(char))  # 拆分数字为单个字符
        else:
            processed_words.append(char)
    words = jieba.lcut("".join(processed_words))
    return words

# 示例文本数据
texts = [
    "这是一段示例文本。",
    "This is an example text.",
    "这个函数用来构建词表和将文本转换为数值序列123。",
]

# 构建词表
vocab = build_vocab(texts)

# 将文本转换为数值序列
sequences = [convert_text_to_sequence(text, vocab) for text in texts]

# 打印词表和转换后的数值序列
print("词表:")
for word, index in vocab.items():
    print(f"{word}: {index}")

print("\n转换后的数值序列:")
for text, sequence in zip(texts, sequences):
    print(f"{text}\n{sequence}")

print("\n转换回句子形式:")
for sequence in sequences:
    text = convert_sequence_to_text(sequence, vocab)
    print(text)

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
主要完成的功能是:地址搜索、辅助处功能,以实现公安指挥中心的数字化指挥。主要应用包括接定位,定位方式包括地名地位、道路定位、交叉路口定位、路灯定位、门牌定位、移动电话定位等多种方式;处过程中的GPS车辆呼叫、最短路径分析、GPS车辆搜索、绿波支持、视频浏览等功能。PGIS通过GPS定位技术,指挥中心可以对所有安装有GPS终端设备的车进行实时监控管理,主要应用功能包括车辆显示、车辆实时跟踪、车辆查询与定位、历史轨迹查询、车辆控制等;PGIS可以在大屏上显示全市范围内的地形、路网、视频点、治安卡点、务亭等信息,对于各单位辖区范围、巡逻区域等信息也可以在大屏上很清晰的表示,全市范围的力部署况一目了然;PGIS为各种统计、分析提供了依据,从而为各种决策提供强有力的辅助支持。PGIS可以设置方案预案并进行管理,当预案启动时,可以将此预案的部署况显示在地图上,PGIS提供的预案功能可以把预先指定好的预案方案进行模拟演示,根据模拟演示的结果调整预案配置方案,使预案方案达到最佳效果等。更多内容请上赛盘古公司网站下载相关文档和视频学习。 Police Geographic Information System,PGIS平台是以公安信息网络为基础,以用电子地图为核心,以地理信息技术为支撑,以服务于公安业务管理、信息共享和决策支持的可视化为目标的重要信息化基础设施,是地理信息技术与公安信息系统相结合的产物,是公安信息化的高端应用,可以有效地拉动公安信息整合、信息共享,实现部、省、市互联互通,全面提升公安信息化应用水平。该项目自2007年开始筹划,最终经过科技部专家评审正式立项,由公安部组织国内相关领域的科研院所、100个城市、企业等来进行实施。 日前,第十届全国少数民族传统体育运动会在内蒙古名城鄂尔多斯召开,为了保证赛事与各项活动的顺利进行,鄂尔多斯市政府采取了全方位、多手段、高标准的安全保障方案。该安保指挥高度平台可以接入公安用地理信息系统、接处系统、视频监控系统、报平台等,建立安保信息资源库,对大型活动预备、开幕、开展、闭幕、结束全阶段方案编制推演,开展可视化的力部署、报研判、风险预、应急指挥、扁平调度、交通特勤等,实现多种、多部门的联合作战,保障安保任务的顺利执行。PGIS技术正在界全面普及,全国已有29个省公安厅都已搭建了PGIS平台,200多个城市完成了PGIS的建设,公安部PGIS平台也已建成,而且在统一标准规范的前提下,实现了全国互联互通和全国一张图的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值