NLTK（Natural Language Toolkit）は、Pythonで利用できる自然言語処理（NLP）のためのオープンソースライブラリです。NLTKは、テキストデータの前処理、形態素解析、構文解析、意味解析、言語モデルなどのNLPタスクをサポートし、多くの機能を提供しています。NLTKは、自然言語の解析や処理を簡単に行えるように設計されており、教育・研究・産業界などで幅広く利用されています。
1. テキスト前処理: NLTKは、テキストデータを前処理するための機能を提供します。テキストのトークン化（単語や文に分割）、ストップワードの削除、ステミング（単語の原形化）、正規化などの処理を簡単に実行できます。
2. 形態素解析: NLTKは、テキストデータを形態素（意味を持つ最小単位）に分割するための機能を提供します。形態素解析により、単語の品詞や原形を抽出することができます。
3. 構文解析: NLTKは、文やフレーズの構文構造を解析するための機能を提供します。構文解析により、文法的な関係を抽出して文の意味を理解することができます。
4. 意味解析: NLTKは、テキストの意味を解析するための機能を提供します。意味解析により、単語や文の意味を理解し、意味的な関係を抽出することができます。
5. 言語モデル: NLTKは、テキストデータを基にした言語モデルの構築や評価を行うための機能を提供します。言語モデルにより、文章の生成や自然言語生成タスクを行うことができます。
import nltk
text = "Natural Language Processing is a subfield of artificial intelligence."
tokens = nltk.word_tokenize(text)
print(tokens)
import nltk
text = "NLTK is a powerful tool for natural language processing."
tokens = nltk.word_tokenize(text)
pos_tags = nltk.pos_tag(tokens)
print(pos_tags)
import nltk
grammar = nltk.CFG.fromstring("""
    S -> NP VP
    VP -> V NP | V NP PP
    PP -> P NP
    NP -> 'NLTK' | 'NLP' | 'Python' | Det N | Det N PP
    Det -> 'a' | 'an' | 'the' | 'my'
    N -> 'tool' | 'subfield' | 'language' | 'processing' | 'intelligence'
    V -> 'is' | 'supports' | 'provides'
    P -> 'for' | 'of' | 'in'
""")
parser = nltk.ChartParser(grammar)
sentence = "NLTK is a powerful tool for natural language processing."
tokens = nltk.word_tokenize(sentence)
for tree in parser.parse(tokens):
    print(tree)
import nltk
from nltk.corpus import wordnet
word = "powerful"
synsets = wordnet.synsets(word)
for synset in synsets:
    print(synset.definition())
import nltk
from nltk.corpus import reuters
from nltk import ngrams
corpus = reuters.words()
bigrams = ngrams(corpus, 2)
print(list(bigrams)[:10])
NLTKはpipコマンドを使用して簡単にインストールすることができます。以下のコマンドを実行してください：
pip install nltk
また、NLTKの機能を利用するには、NLTKコーパスをダウンロードする必要がある場合があります。例えば、以下のコマンドを実行して英語のコーパスをダウンロードできます：
import nltk
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('wordnet')
nltk.download('reuters')