#coding=utf-8
import
pandas as pd
from pandas import
dataframe, series
import
redef
rule(item_str):
"""對內容的規則
:param item_str: str
:return:
"""item_str = re.sub('
\s', ""
, item_str)
item_str = item_str.replace("
,", "
,").replace("
(", "
(").replace("
)", "
)").replace('
"', "「"
)
return
item_str
defget_csv(file_name, csv_filename, col_li):
"""獲取分類模型需要的csv
:param file_name: 原始excel檔案
:param csv_filename: 轉換後的csv檔案
:param col_li: 【text, label】對應的列名
:return:
"""df =pd.read_excel(file_name)[col_li].dropna()
#df["item_info"] = [for i in range()]
#df["工作內容"] = df["工作內容"]
#df["item_info"] = ["" for i in range(len(df[col_li[1]]))]
#處理為需寫入csv的資料
csv_key = ['
text
', '
label
', '
item_info']
data =df.values.tolist()
data_list =
for i in
data:
text_content =rule(str(i[0]))
label_content = rule(str(i[1]))
if text_content in ["", "
nan", "
none
"] or label_content in ["", "
nan", "
none"]:
continue
#風險等級為所隊,錯誤資料
#if label_content == "所隊":
#continue
item_info = ""
df2 = dataframe(data=data_list, columns=csv_key)
df2.to_csv(csv_filename, index=false, encoding="utf-8")
return"ok
"if__name__ == '
__main__':
excel_path = r"
../files_excl/作業風險資料.xlsx"#
excel_path = r"../files_excl/4-5月全部計畫v2.xlsx"
#csv_path = r"../files_csv/feng_xian.csv"
#text_label_li = ["工作內容", "風險等級"]
csv_path = r"
../files_csv/guan_kong.csv
"text_label_li = ["
工作內容
", "
管控層級"]
res =get_csv(excel_path, csv_path, text_label_li)
print(res)
#coding=utf-8
import
codecs
import
xlrd
import
csvimport
redef
rule(item_str):
"""對內容的規則
:param item_str: str
:return:
"""item_str = re.sub('
\s', ""
, item_str)
item_str = item_str.replace("
,", "
,").replace("
(", "
(").replace("
)", "
)").replace('
"', "「"
)
return
item_str
defxlsx_to_csv(file_path, csv_filename, col_li):
"""用於分類模型, excel轉csv
:param file_path: 檔案路徑
:param csv_filename: 轉換後的csv檔名
:param col_li: 需寫到csv列名【text,label】
:return:
"""workbook =xlrd.open_workbook(file_path)
table =workbook.sheet_by_index(0)
row_num = table.nrows #
sheet行數
#col_num = table.ncols # sheet列數
head_li = table.row_values(0, start_colx=0, end_colx=none) #
返回由該行中所有單元格的資料組成的列表
text_index =head_li.index(col_li[0])
label_index = head_li.index(col_li[1])
#print(text_index, label_index)
#print(head_li)
data_list = [["
text
", "
label
", "
item_info"]]
for row in range(1, row_num):
item_li = table.row_values(row, start_colx=0, end_colx=none)
text_content =rule(str(item_li[text_index]))
label_content =rule(str(item_li[label_index]))
if text_content in ["", "
nan", "
none
"] or label_content in ["", "
nan", "
none"]:
continue
#風險等級為所隊,錯誤資料
#if label_content == "所隊":
#continue
item_info = ""
#寫入csv
with codecs.open(csv_filename, "
w", encoding="
utf-8
") as f:
csv_writer =csv.writer(f)
for row_content in
data_list:
csv_writer.writerow(row_content)
return"ok
"if__name__ == '
__main__':
excel_path = r"
../files_excl/作業風險資料.xlsx"#
excel_path = r"../files_excl/4-5月全部計畫v2.xlsx"
#csv_path = r"../files_csv/feng_xian.csv"
#text, label
#text_label_li = ["工作內容", "風險等級"]
csv_path = r"
../files_csv/guan_kong.csv
"text_label_li = ["
工作內容
", "
管控層級"]
res =xlsx_to_csv(excel_path, csv_path, text_label_li)
print(res)
簡單的分類模型
分類模型是文字分類的核心技術,大體上文字分類模型可以分為兩種 基於規則的文字分類和基於統計的文字分類。在基於規則的分類技術中首先需要根據某種假設 建立起可用於分類的規則,該規則包括了文字的表示方法,類別的表示方法,文字與類別的對映方式等等,之後通過訓練過程來完成規則的完善和調整,訓練後則可 以使用該...
分類模型的評價
假如某個班級有男生80人,女生20人,共計100人。目標是找出所有女生。現在某人挑選出50個人,其中20人是女生,另外還錯誤的把30個男生也當作女生挑選出來了。評估 evaluation 下他的工作。1 accuracy 準確率 0 1損失。分類器 某人 正確分類的樣本數 總樣本數,即20 50 1...
分類模型的評價
1 二分類模型 指標計算 備註精準率 precision precision tp tp fp 在所有被 為陽性的測試資料中,真正是陽性的比率。越大越好 召回率 recall recall tp tp fn 在所有實際為陽性的測試資料中,真正是陽性的比率。越大越好 f1score f1score 2...