Mark Chang's Blog

Machine Learning, Deep Learning and Python

Python Functional Programming Style 2

用Functional Programming style來寫程式的時候

可以大幅減少行數和變數的數量

本文接續上一篇:/blog/2014/03/18/python-functional-programming-style-1

繼續探討這種Functional Programming style在python中的應用

1. operator

首先,載入 operator 這個模組

1
>>> import operator

然後,來介紹到底要怎麼使用

Python Functional Programming Style 1

今天來看看如何用python的Functional Programming tool來簡化程式碼

所謂的Functional Programming, 是指像是Lisp或Haskell這樣的程式語言

python所提供的Functional Programming tool

可以用Functional Programming這些語言的風格來寫python

Perceptron Algorithm

1.Introduction

這次來講一下機器學習(Machine Learning)

簡而言之,Machine Learning是一種讓機器根據已知的data,預測出未知的data情形如何

現在,來看看一種簡單的Machine Learning演算法

叫作Perceotron Algorithm

Peceptron Algorithm要做的事

就是要讓電腦學習,怎樣畫一條線,把兩群不同的資料分開

Logistic Regression Model (3D)

1.Introduction

這次來講一下機器學習(Machine Learning)的Logistic Model

搭上3D的風潮,讓我們來看看3D的Logistic Model畫出來會是如何

至於機器學習(Machine Learning)是什麼?

簡而言之,Machine Learning是一種讓機器根據已知的data,預測出未知的data情形如何

Logistic Regression是一種機器學習的Model,可以用來處理分類問題

從input data的feature,可以判斷出output data該歸到那一類

Logistic Regression的model如下

其中 是hypothesis,藉由hypothesis,可以用已知的data來預知未知的data

是input data, 是weight,這兩者皆是矩陣

Python Nltk -- Logic 2 : Lambda Calculus

本篇介紹如何用python nltk 的應用,邏輯語意與lambda calculus

1.introduction

邏輯語意學在語意推導方面,通常會用到

使用就可以把一個句子的語意,從個別單字中推導出來

至於 是什麼呢?

簡而言之,lambda calculus是一種數學運算,由以下三種元素組成

,就是把function中的variable拿到前面,加個

是將另一個 放到 後面

然後可以進行一種運算,叫做 ,如下

還有另一種運算叫做 ,其實就是更改變數名稱而已

NLTK Logic 1 : First Order Logic and Semantics

本篇介紹如何用python nltk 的應用,邏輯語意與推理

1. Introduction

邏輯語意學(logic semantics/formal semantics)

是早期的自然語言處理方法之一

因為自然語言中存在著某種邏輯成份

故可以用數理邏輯的公式來描述自然語言

進行各種邏輯推理

例如 Socrates is a man. 這句話,用一階邏輯式表示:

如果 Socrates is a man. 這句話為真,則:

Note on Xpath Parsing

本篇是我在使用xpath中遇到的一些案例,做些筆記

xpath是什麼,簡而言之,就是可以把網頁的html碼當成Tree

並且用xpath去取得Tree中的某些nodes或leaves

若想了解更多關於xpath是什麼,可以考以下網站

http://www.w3schools.com/XPath/default.asp

以下的xpath實作是以jquery的$$x(“xpath”)`經由chrome brwser的console來操作

至於xpath的實際應用,可以用在web crawler中從網頁中擷取想要的東西

這樣就不需要自己寫個parser來處理html了

Ruby -- Struct v.s openStruct

1.Struct

Ruby 程式語言裡面, 如果想要定義一個新的類別, 但又覺得重新寫一個 class 太麻煩,

有比較方便的方法,

1
2
3
4
5
6
7
8
9
10
11
12
irb> Customer = Struct.new(:name, :phone) do
irb>   def say_hello
irb>    "Hello, I'm #{name}!"
irb>   end
irb> end
=> Customer
irb> Gary = Customer.new("Gary", "0923-355-599")
=> #<struct Customer name="Gary", phone="0923-355-599">
irb> Gary.phone
=> "0923-355-599"
irb> Gary.say_hello
=> "Hello, I'm Gary!"

Python Urlparse

今天來談到URL parse(URL剖析)

在製作web crawler(爬網頁程式)的時候

常常會需要用到URL剖析

1.URL的組成架構

URL的組成架構如下:

[scheme]:/[net_loc]/[path];[params]?[query]#[fragment]

舉個例子

http://www.espn.com:80/basketball/nba/index.html;lang=engl?team=dallas#Roster

則此URL的架構為:

[scheme] http

[net_loc] www.espn.com:80

[path] /basketball/nba/index.html

[params] lang=engl

[query] team=dallas

[fragment] Roster

NLTK Sinica Treebank

今天我們來談談如何用python nltk做中文的的自然語言處理

nltk有內建的中文treebank,是中研院的sinica treebank

是免費的中文treebank

至於要如何使用呢?

首先 先載入模組

1
2
>>> from nltk.corpus import sinica_treebank
>>> import nltk

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