LoginSignup
0
1

More than 3 years have passed since last update.

言語処理100本ノック-51:単語の切り出し

Last updated at Posted at 2020-03-11

言語処理100本ノック 2015「第6章: 英語テキストの処理」51本目「単語の切り出し」記録です。
今回は技術的には前回とほとんど変わりません。10行に満たないコードで終わる簡単なノックです。

参考リンク

リンク 備考
051.単語の切り出し.ipynb 回答プログラムのGitHubリンク
素人の言語処理100本ノック:51 多くのソース部分のコピペ元

環境

種類 バージョン 内容
OS Ubuntu18.04.01 LTS 仮想で動かしています
pyenv 1.2.16 複数Python環境を使うことがあるのでpyenv使っています
Python 3.8.1 pyenv上でpython3.8.1を使っています
パッケージはvenvを使って管理しています

第6章: 英語テキストの処理

学習内容

Stanford Core NLPを用いた英語のテキスト処理を通じて,自然言語処理の様々な基盤技術を概観します.

Stanford Core NLP, ステミング, 品詞タグ付け, 固有表現抽出, 共参照解析, 係り受け解析, 句構造解析, S式

ノック内容

英語のテキスト(nlp.txt)に対して,以下の処理を実行せよ.

51. 単語の切り出し

空白を単語の区切りとみなし,50の出力を入力として受け取り,1行1単語の形式で出力せよ.ただし,文の終端では空行を出力せよ.

回答

回答プログラム 051.単語の切り出し.ipynb

import re

with open('./050.result.txt') as file_in, \
     open('./051.result.txt', 'w') as file_out:
    for line in file_in:
        if line != '\n':
            line = re.sub(r'''
                         [\.|;|:|\?|!|,]*  # . or ; or : or ? or ! or , が0回以上
                         \s                 # 空白
                       ''', '\n', line, flags = re.VERBOSE)
            print(line, file=file_out)

回答解説

正規表現

前回に続き正規表現を使った処理。今回は空白(スペース)を改行に置換です。
肯定の先/後読みアサーションがない分、今回の方がシンプルです。空白前に記号系があった場合も置換対象にしました。

出力結果(実行結果)

プログラム実行すると以下の結果(先頭20行抜粋)が出力されます。

051.result.txt(先頭20行抜粋)
Natural
language
processing

From
Wikipedia
the
free
encyclopedia

Natural
language
processing
(NLP)
is
a
field
of
computer
science
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1