百折不撓

データ系の新米エンジニアとして戦闘中。

言語処理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もそうですが、何でも使っていないと本当に忘れてしまいますね。はてな記法もさっぱり覚えていませんでした。少しずつ、もう少しまともな記事にしていきます。