言語処理100本ノックchap01_04
最近Excelしか触っておらず、それもごく簡単な集計位の事しかやっていない。これはいけないと思い、少しでも足掻かないと上には上がってなんかいけやしないと、以下のサイトのノックでもがき始めた。
http://www.cl.ecei.tohoku.ac.jp/nlp100/言語処理100本ノック 2015
たぶん、この界隈の人には有名なサイトなのかもしれないけど、まずは手習いという事でやってみた。今日はタイトルの通り1章のQ4をやってみたので、糞みそなコードを載せる。まず間違いなく、もっとうまいと言うか、スマートなやり方があると思うが、ググりながらやっても、今の自分にはこれが精いっぱい。ひょんな事でここにたどり着いてしまって、こうした方が良いんじゃないって方はコメントください。
サイトにして欲しい処理が問題として載っていますが、掻い摘んで言うと、「(僕のコードではtextに代入している文章の)各単語の先頭から1文字or2文字分が元素周期表のCaまでになっているので、それを抜き出してくれ。」と言った問題です。
ただ、マグネシウムが題意の処理をすると"Mi"になってしまう。そもそも"Mg"で始まる単語があるのか知りませんが、文章に入れようと思ったら、 F = Mg みたいな事しか思い浮かびません。
と言うわけで、前置きが長くなりましたが、私の糞みそコード:
import numpy as np import pandas as pd text = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can." text = text.replace(".","").replace(",", "") list_text = text.split(sep=" ") ser_text = pd.Series(list_text) get_only_first_char = np.array([1, 5, 6, 7, 8, 9, 15, 16, 19], dtype=np.int8) get_only_first_char = get_only_first_char - 1 atoms = {} for num in np.arange(0, len(list_text)): if num in get_only_first_char: ones = ser_text[num][:1] atoms[ones] = num else: twos = ser_text[num][:2] atoms[twos] = num print(atoms)
pythonもそうですが、何でも使っていないと本当に忘れてしまいますね。はてな記法もさっぱり覚えていませんでした。少しずつ、もう少しまともな記事にしていきます。