自然言語処理における言語データの保存方法をまとめてみた
あなたの言語データ、正しく管理できてますか?
自然言語処理(NLP)で単語の頻度や埋め込みベクトルなどを扱っている皆様こんにちは!
生テキストやBoWや埋め込み表現等、言語処理で使われるデータはいろいろありますがどのように管理してますか?
これらのデータの管理法についての議論が少ないように感じたので寄稿いたしました。
私がpythonをよく使うので少しpythonista寄りの記事なるかもしれませんがそこはご理解ください。
個々の方法についてはデータの構造、規模、用途により変わるため
今回は事例紹介にとどめておきます。
主な管理方法として以下があると思います。(他にもあればコメントお願いします!)
管理方法一覧(サービスと保存形式がごっちゃになってますが、ここでは管理方法としてあえて一緒にしてます)
- RDBMS
- NoSQL
- NewSQL
- 全文検索エンジン (Elasticsearch等)
- BigQuery
- CSV(Excel)
- txt
- XML
- 生json
- オントロジ(LOD)
- 生プログラミング言語の変数
また、前処理等をしてから保存するのか、保存したrawデータに対して解析時に逐次前処理するのか
という疑問もあると思います。
やっかいなのが機械学習・NLPの入門書では自分でデータを作って管理することについて
述べている書籍は少ないと感じました。(著者が読んだ本の中では)
なので、データエンジニアリング初心者の方がどのように保存していいか迷うことがあると思います。
前例から学ぼう
有名データセット編
では有名(テキスト)データセットはどのように保存されているか見ていきましょう
IMDB
皆さんおなじみの映画のレビューデータはレビュー自体はtxtで
ボキャブラリーデータはvocabという拡張子のテキストデータでした。20 Newsgroups
こちらもそのままテキストでした。IMDBと違うのはvocabファイルがないためボキャブラリー数は自分でカウントする必要があります。DBpedia
DBpediaというwikipeidaデータからオントロジを構築するプロジェクト
wikipediaの記事及びリンクの関係も指定して細かく取得することできる
*wikipediaのダンプデータもあるがこちらはXML
画像引用:https://medium.com/openlink-software-blog/what-is-dbpedia-and-why-is-it-important-d306b5324f90
やはり広く公開するデータセットの特性上プラットフォームを問わず開けるtxtが多いですね
各企業のノウハウ編
NLP関連かつDB周りのアーキテクチャを公開している企業さんの記事を探してみました。
-
Oracle
当然といえば当然だがOracleDBとセットで機械学習できるOracle Data Minerを推奨している。 利点はOracleDBから実行できデータの加工やパラメータ設定を自動で行ってくれるそう。
-
DATUM STUDIO
TECHブログの記事ではMySQLを使用しています。Tweet文書データのidをキーに文書自体を保存してます。そして分析時に前処理をしているようです。
id: 663269643650404353 user_id: 945808578 text: 商品が売れている証拠だ created_at: 2015-11-08 08:19:40
自然言語処理系の研究室
こちらでは自然言語処理の専門家である山本先生がテキストをDB化することについて述べています。
要約すると
生データだと容量がヤバイ!=> RDB使って容量とそこそこの高速化を担保
ちなみに同研究室HPではNoSQLについても述べている。
方法から学ぶ編
ここではwebで見つけたNLP関連のデータ管理について方法を軸にまとめていきます。
-
NoSQL
言語データとしてはメジャーなtwitterデータを例にNoSQLを使用するメリットを述べてます。 -
BigQuery
NLP界隈で多くの記事を投稿しているhirosanの記事
こちらもtwitterデータを対象にしています。 Elasticsearch
言語処理の観点ではTokenizationやAnalysisという機能が便利だと思います。
・応用事例での解説
質問応答システムの基盤にElasticsearchを使ってみる
・データベースとしての解説
データベースとしてのElasticsearch
まとめ
データの管理方法にベストはありませんが、私の経験と上の事例から用途ごとおおかに分けることができます。
- 広く多くの人に公開したい=>txt
- 言語処理以外も含めて様々なタスクで高頻度で利用したい=>RDB
- 言語処理のみだが高頻度かつ高度な分析で利用したい=>NoSQL or 全文検索エンジン
- 少量データのみで手軽に集計・分析したい=>CSV
- 制作に時間をかけても精密な分析を行いたい=>オントロジ(LOD)
Author And Source
この問題について(自然言語処理における言語データの保存方法をまとめてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/pomcho555/items/4cf4f72deb8ed8c4f202著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .