やりたいこと
自然言語処理について勉強しています。
Wikipediaのxmlデータからテキストを抜き出して処理をしようと思ってます。
抜き出したテキストは用意できましたが,テキスト中にリンクやタグ,数字などがあるので前処理としてテキストクリーニングしてテキストから日本語の名詞部分のみを抽出したいのですが,指定したい正規表現がわからなくて困ってます.
(*調査時にMeCabに通すときに日本語文字列の名刺だけピックアップできればいいのではないかなとも思いました.)
取り除きたいものは(re.subで’’に置き換えたい)
0. tag(<title>,<id>,<text>など)
1.http〜などのリンク部分(英語も全て)
2.無駄なスペース
3.数字(5や1994など)
プログラミングはあまり得意ではないです。
日本語の名詞だけを抜き出した後,重複単語を除いた単語リストを作成し,word2vecで単語間の類似度を算出したリストを生成したいです.
実行環境
Macbook pro(2017)
OS:11.6.7
以下に現在のソースコードを貼り付けます。
idf_test.py
1# -*- coding: utf-8 -*- 2import MeCab 3from tqdm import tqdm 4from gensim.models.doc2vec import Doc2Vec 5import pandas as pd 6import math 7import re 8print("モデルロード") 9model = Doc2Vec.load("jawiki.doc2vec.dbow300d.model") 10myfile = open('history_0text.txt') 11# 以下に抽出したい文textここをファイルを読み込むように変更 12 13text = myfile.read() 14m = MeCab.Tagger("-Ochasen") 15mp = MeCab.Tagger() 16# m.parse("") 17print("処理開始") 18removeW = re.compile( 19 '[!"#$%&\'\\\\()*+,-./:;<=>?@[\\]^_`{|}~「」〔〕“”〈〉『』【】&*・()$#@。、?!`+¥% ]') 20 21 22text = removeW.sub('', text) 23print("text clesn complite!") 24# print(text) 25# f=open('simw_d2v_2.txt',"w") 26#paragraf =mp.parse(text).split('\n') 27nouns = [line.split()[0] for line in m.parse(text).splitlines() 28 if "名詞" in line.split()[-1]] # ここをへんこうする 29for str in nouns: 30 str.split() 31 32 # type:strで格納済み 33# print(nouns)#中身の確認 34a = 0 35l_size = len(nouns) 36b = 0 37simd = {} 38simt = [] 39wsimx = {} 40wsimid = {} 41eject = [] 42 43# ここで重複単語の除外 44print("重複単語除外") 45nouns2 = [] 46for x in nouns: 47 if not x in nouns2: 48 nouns2.append(x) 49 50l_size2 = len(nouns2) 51# print(nouns2) 52# print(l_size2,"単語") 53listn = [[None]*l_size2 for i in range(l_size2)] 54# 辞書の作成key=nouns2,value=none 55for x in nouns2: 56 simd.setdefault(x, []) 57 58# 処理 本体 59 60print("計算中") 61for a in range(0, l_size2): 62 l_size2 = len(nouns2) 63 print(l_size2) 64 w1 = nouns2[a] 65 # simw=[for i in range(l_size2)] 66 print("単語:(", w1,")", a+1, "回目") 67 68 # simw[a].append(w1) 69 for b in range(0, l_size2): 70 print(b) 71 w2 = nouns2[b] 72 if w2 not in model.docvecs: 73 eject.append(w2) 74 nouns2.remove(w2) 75 # print("deleated\t:"+w2) 76 continue 77 78 sim = model.docvecs.similarity(w1, w2) 79 listn[a][b] = sim 80 81 if sim >= 0.8: 82 # print(w1,"類義語:",w2) 83 84 simd[w1].append(w2) 85 86 # print("類語 ",w1,":",simd[w1]) 87 88print("処理を", a+1, "回実行しました") 89for k, v in simd.items(): 90 print("単語", k, "値:", v) 91 92 93# 類語辞書作成 94 95 96print("makeing simdictionaly...") 97samw = 0 98for i in range(0, l_size2): 99 wsimid[i] = 0 100 # print(wsimid) 101 for alpha in simd.keys(): 102 list1 = simd.get(alpha) 103 if i <= 140: 104 # print(i,list1) 105 for x in list1: 106 # c=nouns.count(x) 107 # xid=wsimx.get(x) 108 # print(x,":",c) 109 #samw += c 110 wsimx.setdefault(x, i) 111 # wsimid[xid]=wsimid.get(xid)+c 112 # wsimid[xid]=c 113 i += 1 114 115 116print("単語からid辞書", wsimx) 117print("idから出現個数リスト(値は0)", wsimid) 118 119 120 121
欲しい出力の一例です。これから数字も除外したいです。
sample
1#text = "湖山池 湖山池 は 鳥取 県 鳥取 市 に ある 湖 で ある なお 池 と 付く 湖沼 の 中 で は 日本 の 広 さ で も ある 姉妹 湖 として 島根 県 の 神西湖 が ある 湖山池 は 、 鳥取 で は 中海 の に 大きい 湖沼 で 古代 に 日本海 から し た 場所 が 砂丘 の 発達 や 堆積 により 海 と さ れ て でき た 海 跡 湖 で も ある 。 大小 の 小島 が 浮かぶ の 島 の 青島 に は から 架橋 さ れ て おり の 木 が 植え られ た 道路 で 徒歩 や 自転車 により する こと が でき キャンプ も 数 本 の が 、 川 によって 日本海 と 結ば れ て おり 鳥取 市 郊外 の 地 の と なっ て いる 地区 で は 的 に も 珍しい 石 漁 が に 行わ れ 石 の に 潜む を 棒 で つつい て する で 、 県 の 文化財 に さ れ て いる の 自治 や NPO が に 努め て い て 、 間 中 に は 石 祭 も 行わ れる 。 姉妹 湖 の 神西湖 シジミ も よく 穫 れる 。 広大 な を 有し て い た 長者 が 、 日没 まで に 田植え が 終わら なかっ た 扇子 で を 招き 返し て 田植え を 終え た が 、 一夜 明ける と 田 は 池 に 変わっ て い た という 長者 の 伝説 が 知ら れ て いる 似 た よう な 話 が 岐阜 市 の が 池 に 伝わっ て いる 古く から 開け た 地域 で あり 青島 周辺 に は 縄文 時代 から 弥生 時代 にかけて の 遺跡 が また 時代 に は 東側 の 湖畔 に 守護 所 で ある 天神山 城 が 置か れ 西側 の 湖畔 に 突き出 た 半島 に は 国人 領主 の 吉岡 氏 の 居城 だっ た が 築か れ た は JR 山陰本線 駅 駅 1995 年 7 月 27 日 鳥取 駅 が 加わっ た また 、 鳥取 駅 駅 の 間 で は 南 に 池 の 美しい 風景 が 見える ちなみに の 海 は 松林 で ある 。 2013 年 3 月 、 アザラシ が 発見 さ れ た 。 2012 年 3 月 に が と なっ た 川 を通じて 日本海 から 入っ て き た と 考え られる 2 2014 年 10 月 19 日 約 30 年 に 船 の を 3 画像 青島 石 が ま 歌川 脚注 脚注 の 国土 地理 院 2018 年 10 月 1 日 平成 30 年 都道府県 面積 調 湖沼 面積 2019 年 2 月 3 日 閲覧 日本 の 池 、 水門 鳥取 初 の 化 47 2012 年 3 月 12 は 濃度 の 上昇 に 伴い 環境 が 変化 し た 存在 し ない 類 が し から し て い た 類 が 絶滅 し つつ ある ニュース 山陰放送 山陰放送 2014 年 10 月 20 日 閲覧 関連 に は 湖山池 に 関連 する カテゴリ が あり ます 日本 の 湖沼 天神山 城 石 漁 東郷池 鳥取 県 中部 に ある 湖 で は も 池 と 呼ぶ " 2 3

回答1件
あなたの回答
tips
プレビュー