トークン化

Jan 10 2023
トークン化とは?? 簡単に言えば、テキストを単語または文に分割します… ここでは、NLP で使用できるさまざまなトークナイザーについて説明します …… 2. 特定の分割 空白と同じですが、ここでは必要な任意のスプリッターを分割します 3.

トークン化とは?? 簡単に言えば、テキストを単語または文に分割します…

トークン化

ここでは、NLP で使用できるさまざまなトークナイザーについて説明します…………

  1. ホワイトスペース

text = 'Earth was born around 4.54 billion years ago.'
print(text.split())
# output
# ['Earth', 'was', 'born', 'around', '4.54', 'billion', 'years', 'ago.']

2.特定の分割

空白と同じですが、ここでは必要splitなスプリッターを指定します

text = 'Egypt, a country linking northeast Africa with the Middle East, dates to the time of the pharaohs.'
print(text.split(','))
# output
# ['Egypt', ' a country linking northeast Africa with the Middle East', ' dates to the time of the pharaohs.']

3.NLTK _

NLTK は、人間の言語データを扱う Python プログラムを構築するための主要なプラットフォームです。使用できるトークナイザーはたくさんあります

l) word_toknizer: split 関数の問題を解決します:

word_toknizer: 上の黄色のマークを参照してください

ll) sent_tokenize:以前にトレーニングしたモデルとして分割テキストを使用します。

sent_tokenize: これは私の引用であり、引用と私の名前として分割されます

lll) wordpunct_tokenize:ここでは、すべての単語と句読点を分割します。

wordpunct_tokenize: トークンにすべての単語と句読点があることがわかります

iv) TreebankWordTokenizer:この句読点?!.,;のようにテキストを分割しますが、これは英単語のさまざまな一般的なルールです。

TreebankWordTokenizer: 上の黄色のマークを見ると、それが私の名前であることがわかるので、トークンとして認識されます

V) TweetTokenizer:?!.,;テキストを句読点として絵文字に分割します

TweetTokenizer

Vl) MWETokenizer:add_mweここでは、このトークナイザーが提供するので、必要に応じてトークンを追加できます。

MWETokenizer: 結果に表示されるトークンを追加しました。そのトークンが表示されます

4.テキストブロブ

TextBlob は、テキスト データを処理するための Python (2 および 3) ライブラリです。これは、品詞のタグ付け、名詞句の抽出、感情分析、分類、翻訳などの一般的な自然言語処理 (NLP) タスクに飛び込むためのシンプルな API を提供します。

from textblob import TextBlob
text="""But I'm glad you'll see me as I am. Above all, I wouldn't want people to think that I want to 
prove anything. I don't want to prove anything, I just want to live; to cause no evil to anyone but myself. 
I have that right, haven't I? Leo Tolstoy """

blob_object= TextBlob(text)     # Word tokenization of  the text
text_words = blob_object.words  # To see all tokens
print(text_words)  # To count the number of tokens
print(len(text_words))

# output
# ['But', 'I', "'m", 'glad', 'you', "'ll", 'see', 'me', 'as', 'I', 'am', 'Above', 'all', 'I', 'would', "n't", 'want', 'people', 'to', 'think', 'that', 'I', 'want', 'to', 'prove', 'anything', 'I', 'do', "n't", 'want', 'to', 'prove', 'anything', 'I', 'just', 'want', 'to', 'live', 'to', 'cause', 'no', 'evil', 'to', 'anyone', 'but', 'myself', 'I', 'have', 'that', 'right', 'have', "n't", 'I', 'Leo', 'Tolstoy']
# 55

5.スペイシー

spaCy は、Python の自然言語処理のための無料のオープンソース ライブラリです。NER、POS タグ付け、依存関係の解析、単語ベクトルなどを備えています。

それは私たちにトークンとそのインデックスをすべての単語と句読点と絵文字を与えます

6.ゲンシム

Gensim: これは、教師なしトピック モデリングと自然言語処理で使用される、Radim Rehurek によって書かれた Python のオープンソース ライブラリです。ドキュメントからセマンティック トピックを抽出するように設計されています。大規模なテキスト コレクションを処理できます。

ここでは、すべての句読点と絵文字を削除します

7.ケラス

Keras はオープンソース ライブラリであり、最も信頼性の高いディープ ラーニング フレームワークの 1 つです。トークン化を実行するには、クラス Keras.preprocessing.text クラスの text_to_word_sequence メソッドを使用します。Keras の優れた点は、トークン化する前にアルファベットを小文字に変換することです。これにより、時間を大幅に節約できます。

from keras.preprocessing.text import Tokenizer
from keras.preprocessing.text import text_to_word_sequence

text = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.  #Albert Einstein"


tokinzer = Tokenizer(num_words=20)  # as recommended we put here the max text length we have
tokinzer.fit_on_texts(text)
tokens = text_to_word_sequence(text)
print(tokens)

# output
# ['two', 'things', 'are', 'infinite', 'the', 'universe', 'and', 'human', 'stupidity', 'and', "i'm", 'not', 'sure', 'about', 'the', 'universe', '', 'albert', 'einstein']

8.サブワードベースのトークン化

人気のあるトークン化は、単語ベースのトークン化と文字ベースのトークン化の間のソリューションであるサブワード ベースのトークン化です。主なアイデアは、単語ベースのトークン化 (非常に大きな語彙サイズ、多数の OOV トークン、および非常に類似した単語の異なる意味) と文字ベースのトークン化 (非常に長いシーケンスとあまり意味のない個々のトークン) が直面する問題を解決することです。

サブワード ベースのトークン化アルゴリズムでは、次の原則が使用されます。

  1. 頻繁に使用される単語を小さなサブワードに分割しないでください。
  2. 珍しい単語をより小さな意味のあるサブワードに分割します。

課題

トークン化タスクの課題と制限について説明しましょう。

一般に、このタスクは英語またはフランス語で書かれたテキスト コーパスに使用されます。これらの言語では、空白または句読点を使用して単語を区切り、文の境界を定義します。残念ながら、この方法は、中国語、日本語、韓国語、タイ語、ヒンディー語、ウルドゥー語、タミル語などの他の言語には適用できません。この問題により、すべての言語を組み合わせた共通のトークン化ツールを開発する必要が生じます。

アラビア語は言語として複雑な形態を持っているため、アラビア語テキストのトークン化には別の制限があります。たとえば、アラビア語の 1 つの単語には、「عقد」(eaqad)という単語のように、最大​​ 6 つの異なるトークンが含まれる場合があります。

同じ文字ですが意味が異なります

結論

この分野では多くの種類の研究が行われており、成長しており、NLP に直面する多くの課題がありますが、将来これらの問題が解決されることがわかります。

このリンクでコードを見ることができます