基於正規表示式的提取漢字和數字之文字規範化

2021-09-29 16:56:56 字數 1597 閱讀 5640

在只能完鑽井大資料處理過程中,先期要從多格式非結構化的文獻中獲取資訊,為後期的資料探勘、處理做準備。由於很多文獻都是caj或者pdf格式文件,需要將這些文件轉成可編輯的word或者是txt文件,然後才能做資料的提取。然而很多早期的pdf文件為掃瞄版的,噪點很多。此外caj文件也需要轉成pdf,再轉成word或者txt格式。在caj或者pdf格式轉換到word文件時,在word文件中經常會產生亂碼字元。為了後期分類處理中文、數字和特殊字元,需要將中文、數字和特殊字元提取出來,文字規範化模組就是完成該任務。

開發環境:pycharm2019+anconda3

程式語言:python3.7

使用到的庫:docx、re

解析要求:

1、特殊字元

2、文字分句

一、正規表示式

1、提取特殊字元

正規表示式:[\u4e00-\u9fa5\^\t?\s\。\、\,\?\:\」\「\d+\.?\d*a-za-z]+

正規表示式:[\u4e00-\u9fa5\。\、\,\?\:\」\「\d+\.?\d*]+"

由於特殊字元是ocr識別過程中形成的,不能用特殊字符集來提取。因此程式中採用的方法是用re.sub( )將漢字字元、數字字元和句子標點用空格替換掉,那麼剩下的就是特殊字元。

2、文字分句

所處理的都是中文文件,所以分句的演算法主要是按照「。」、「!」、「?」劃分句子即可。

3、**片段

# 讀取word文件並提取

for paragraph in docstr.paragraphs:

parstr = paragraph.text

spec_chara_filter=re.sub("[\u4e00-\u9fa5\^\t?\s\。\、\,\?\:\」\「\d+\.?\d*a-za-z]+"," ",parstr)

cont_spec_chara_str=cont_spec_chara_str+spec_chara_filter

# 寫入文字檔案

post_txtfile=open('posttxt.txt','w')

post_txtfile.write(cont_spec_chara_str)

post_txtfile.write('\n')

# 文字分句寫txt文字

words = cont_ch_chara_str.strip()

onesentence = ""

for word in words:

if word not in cutlineflag:

onesentence = onesentence + word

else:

onesentence = onesentence + word

if onesentence.__len__() > 4:

onesentence = ""

post_txtfile.writelines(sentencelist)

post_txtfile.close()

正規表示式匹配漢字

這裡是幾個主要非英文語系字元範圍 2e80 33ffh 中日韓符號區。收容康熙字典部首 中日韓輔助部首 注音符號 日本假名 韓文音符,中日韓的符號 標點 帶圈或帶括符文數字 月份,以及日本的假名組合 單位 年號 月份 日期 時間等。3400 4dffh 中日韓認同表意文字擴充a區,總計收容6,582...

jmeter 正規表示式提取

我們在做壓測時,經常會碰到需要上個介面的結果作為引數傳遞到下乙個介面,此時需要用到正規表示式提取功能。1 新增jmeter正規表示式提取器 在具體的request下新增jmeter正規表示式提取器 jmeter正規表示式在 後置處理器 下面 例1如下 引用名稱 tokenid 自己定義 模板 1 匹...

正規表示式提取時間

時間的各種格式都可以通過正規表示式來匹配,例如我們想精確匹配hh mm的時間,即包含小時和分鐘,可以使用下面的表示式 0 9 0 0 9 1 0 9 2 0 3 0 5 0 9 0 9 0 0 9 1 0 9 2 0 3 0 5 0 9 更多關於時間和日期的正規表示式,參考 regexlib.pub...