MARK CHANG'S BLOG

若發生公式跑掉或無法正常顯示的情形,請在公式上按右鍵設定:math setting-> math render->SVG
  • About Me
  • Archive
  • feeds

Posts match “ natural_language_processing ” tag:

almost 9 years ago

Python nltk -- Sinica Treebank

今天我們來談談如何用python nltk做中文的的自然語言處理
nltk有內建的中文treebank,是中研院的sinica treebank
是免費的中文treebank
至於要如何使用呢?
首先 先載入模組

>>> from nltk.corpus import sinica_treebank
>>> import nltk

接下來我們來看看treebank裡面的東西:

Read on →
  • Python
  • natural_language_processing
  • nltk
  • March 09, 2014 15:41
  • Permalink
  • Comments
 
almost 9 years ago

Python nltk -- Tree

今天我們來看看nltk.Tree要怎麼用

先載入模組

>>> from nltk import Tree

1.build syntax tree

舉個例子
Gary plays baseball
此句子的剖析樹(syntax tree)是這樣:
nltk1.png

用nltk.Tree來建構tree:

>>> tree=Tree('S',[Tree('NP',['Gary']),
...           Tree('VP',[Tree('VT',['plays']),
...                     Tree('NP',['baseball'])])])
>>> tree.draw()

即可將剖析樹畫出來
若沒安裝 python-tk,你也可以這樣把tree印出

>>> tree.pprint()
'(S (NP Gary) (VP (VT plays) (NP baseball)))'
Read on →
  • Python
  • nltk
  • natural_language_processing
  • grammar
  • March 01, 2014 00:36
  • Permalink
  • Comments
 
almost 9 years ago

自然語言處理 -- Ngram Smoothing / Interpolation

以下為我對於 Ngram Smoothing 這個章節的公式所做的筆記

Introduction

Ngram Smoothing 是用於出現在 Training Corpus 中沒有的 Ngram,
它的機率會是0
本文以 Bigram 為例, Bigram 的機率如下:

如果 , 則
為了避免probability為0, 我們要做 Ngram Smoothing

Read on →
  • natural_language_processing
  • March 28, 2014 19:57
  • Permalink
  • Comments
 
almost 9 years ago

自然語言處理 -- Hidden Markov Model

1.Markov Model

Hidden Markov Model 在 natural language processing 中,
常用於 part-of speech tagging

想要了解 Hidden Markov Model ,就要先了解什麼是 Markov Model

例如, 可以把語料庫中,各種字串的機率分佈,
看成是一個Random varaible 的 sequence ,
其中, 的值是 alphabet (字)的集合 :

如果想要知道一個字串出現的機率, 則可以把字串拆解成Bigram, 逐一用前一個字,來推估下一個字的機率是多少
但是要先假設以下的 Markov Assumption

Read on →
  • natural_language_processing
  • hmm
  • tagging
  • April 03, 2014 11:38
  • Permalink
  • Comments
 
almost 9 years ago

自然語言處理 -- Naive Bayes Classifier

1.Introduction

在自然語言處理的應用, 常常有分類的問題, 例如把某篇新聞分到哪一類
處理分類問題, 有種簡單的方法, 就是看這篇文章有哪些關鍵字, 根據這些關鍵字的出現與否, 用 Naive Bayes Classifier 做分類

要講 Naive Bayes Classifier 之前, 首先, 要知道 Bayes rule 是什麼, Bayes rule 很簡單, 如下

這個公式, 高中數學應該都有教過 , 如果 和 為 Independence , 則

所謂的 Naive Bayes Classifier , 其實就是應用 Bayes rule 來處理分類問題

Read on →
  • natural_language_processing
  • Naive_Bayes
  • classifier
  • sentiment_analysis
  • April 13, 2014 15:04
  • Permalink
  • Comments
 
almost 9 years ago

自然語言處理 -- TF-IDF

1.Introduction

所謂的 TF-IDF , 是用來找出一篇文章中, 足以代表這篇文章的關鍵字的方法

例如, 有一篇新聞, 是 nltk 的 Reuters Corpus 中的文章, 這篇文章被歸類在 grain , ship 這兩種類別下, 文章的內容如下:

GRAIN SHIPS LOADING AT PORTLAND
There were three grain ships loading and two ships were waiting to load at Portland , according to the Portland Merchants Exchange .

假設不知道什麼是 TF-IDF, 先用人工判別法試看看, 這篇新聞的關鍵字, 應該是 Portland , ship , grain 之類的字, 而不會是 to , at 這種常常出現的字
為什麼呢?因為 to 或 at 雖然在這篇文章中出現較多次, 但其他文章中也常有這些字, 所謂的關鍵的字, 應該是在這篇文章中出現較多次, 且在其他文章中比較少出現的字

所以,如果要在一篇文章中, 尋找這樣的關鍵字, 要考慮以下兩個要素:

Read on →
  • natural_language_processing
  • TF-IDF
  • April 14, 2014 18:12
  • Permalink
  • Comments
 
almost 9 years ago

自然語言處理 -- Log-Linear Model

1. Introduction

在機器學習中有一種用於分類的演算法, 叫作 Logistic Regression , 可以把東西分成兩類

而在自然語言處理的應用, 常常需要處理多類別的分類問題, 像是 Part of speech Tagging 就是把一個字詞分類到名詞, 動詞, 形容詞, 之類的問題

如果二元分類的 Logistic Regression , 推廣到多種類別分類, 就可以處理這種分類問題

首先, 把二元分類的 Logistic Regression 公式, 稍做調整, 如下

針對多類別的 Logistic Regression , 叫作 Multinomial logistic regression , 如果總共有 的類別, 每個類別的 label 為 , 則公式如下

Read on →
  • natural_language_processing
  • log_linear
  • entropy
  • tagging
  • classifier
  • maximum_entropy
  • April 28, 2014 19:00
  • Permalink
  • Comments
 
almost 9 years ago

自然語言處理 -- Pointwise Mutual Information

1.Introduction

在自然語言處理中, 想要探討兩個字之間, 是否存在某種關係, 例如某些字比較容易一起出現, 這些字一起出現時, 可能帶有某種訊息

例如, 在新聞報導中, 有 New , York , 這兩個字一起出現, 可以代表一個地名 New York , 所以當出現了 New 這個字, 則有可能出現 York

這可以用 Pointwise Mutual Information(PMI) 計算

Pointwise Mutual Information 的公式如下:

Read on →
  • natural_language_processing
  • mutual_information
  • April 26, 2014 01:58
  • Permalink
  • Comments
 
almost 9 years ago

自然語言處理 -- Chart Parsing

1.Introduction

在自然語言處理中, 剖析 ( Parsing ) 是根據定義好的文法, 把句子轉換成 Syntax Tree 的過程

Chart Parsing 是利用一種叫做 Chart 的資料結構, 來進行剖析的演算法

Chart 的結構如下

以下為一個 Chart 的例子

Read on →
  • natural_language_processing
  • parsing
  • Chart
  • April 26, 2014 11:41
  • Permalink
  • Comments
 
over 8 years ago

Python nltk -- Dependency Grammar

1. Introduction

在自然語言處理中, Phase-Structured Grammar 這類的文法, 是把一個句子, 剖析成一個 完整的剖析樹 , 它的重點是句子中各個成份的階層關係, 例如 Context-Free Grammar

而所謂的 Dependenct Grammar , 是著重在 字和字之間關係 , 而非整個句子中各種成份階層關係, 例如

用Depedenct Grammar 可以表示成這樣


如上圖, 把詞語和詞語之間的關係, 用箭頭表示, 箭頭的起點為 Head, 終點為 dependents , 標示箭頭上的英文字代表 Head 和 Dependent 之間的 relation

Read on →
  • natural_language_processing
  • grammar
  • parsing
  • dependency_grammar
  • nltk
  • May 03, 2014 23:00
  • Permalink
  • Comments
 
over 8 years ago

Python nltk -- Rule-Based Chunking

Chunking

分析句子的成份, 當句子不符合文法時, 使用 Context-Free Grammar 去做 Parsing , 可能會得不出結果, 而某些應用, 需要的並不是完整的剖析樹, 而是把句子中某些成份給找出來

Chunking 的概念就是, 把句子中的單字分組, 每一組是由一到多個相鄰的單字所組成, 例如, 想要得出句子中有哪些名詞片語, 就可以把相鄰的定冠詞, 名詞修飾語, 以及名詞, 分成一組, 分組所得出的即為名詞片語

舉個例子, 在以下的句子中, 想要找出名詞片語有哪些

首先, 對這個句子進行 Part of speech Tagging

Read on →
  • nltk
  • natural_language_processing
  • chunking
  • information_extraction
  • May 06, 2014 22:46
  • Permalink
  • Comments
 

Copyright © 2013 cpmarkchang . Powered by Logdown.
Based on work at subtlepatterns.com.