2012/09/13

OCI for PHP 安裝 in CENTOS6 x86_64


ORACLE 的 php 支援說明
http://www.oracle.com/technetwork/topics/php/downloads/index.html

需要先安裝 Oracle Database Instant Client
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下載,他會依據作業系統給你載點,並且要求你登入 oracle (免費註冊)
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
請抓取  basic 及 devel 這兩個檔案

[root@power app]# rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm 
[root@power app]# rpm -ivh oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm 

# 安裝 php-devel 、php-pear 以及 gcc 編譯套件
[root@power app]# yum install php-devel php-pear gcc

# 使用 pecl 直接安裝 http://pecl.php.net/package/oci8 ,這是一個 PHP 的元件,會需要編譯所以需要上面兩個 oracle instat client 套件的資料
[root@power app]# pecl install oci8
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading oci8-2.0.6.tgz ...
Starting to download oci8-2.0.6.tgz (189,668 bytes)
.....................................done: 189,668 bytes
11 source files, building
running: phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :  <-- enter="" font="">

省略 n 行....

Build process completed successfully
Installing '/usr/lib64/php/modules/oci8.so'
install ok: channel://pecl.php.net/oci8-2.0.6
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini



# 編譯完成後請將 extension=oci8.so 這一行加入 /etc/php.ini
[root@power app]# vim /etc/php.ini
extension=oci8.so


# 重新啟動 httpd

[root@power app]# /etc/init.d/httpd restart


# 觀看 phpinfo(); 程式的內容,應該會看到 oci8 的模組已經被載入內容應該如下列

oci8

OCI8 Supportenabled
Version1.4.7
Revision$Revision: 321634 $
Active Persistent Connections0
Active Connections0
Oracle Run-time Client Library Version11.2.0.3.0
Oracle Instant Client Version11.2
Temporary Lob supportenabled
Collections supportenabled

DirectiveLocal ValueMaster Value
oci8.connection_classno valueno value
oci8.default_prefetch100100
oci8.eventsOffOff
oci8.max_persistent-1-1
oci8.old_oci_close_semanticsOffOff
oci8.persistent_timeout-1-1
oci8.ping_interval6060
oci8.privileged_connectOffOff
oci8.statement_cache_size2020



# 那就寫程式去巴!!! 請參考 php oci 的說明
http://www.php.net/manual/zh/function.oci-connect.php


2012/09/04

Mining 人生

Text Mining (張德明)

Text  Mining  <==> 雷同於 Data Mining

data 很難取得,所以改用 text 做 mining
Text Preprocess -- text 文字事先處理

knowledge discovery process
data -> targetd data --> data preprocess --> data transformation --> modules --> knowledge

買a也會買b 的關聯,通常資料不會記載需要透過分析才能取得

重點在 text mining :
1. 我針對我收集的文件來做處理
2. IR(information retrieval)
3. Corpus-based computational linguistics
4.很接近 data-mining

http://blue.lins.fju.edu.tw/~tseng/ResearchResults/index.htm

機器學習 --> data mining --> text mining

Preproces 把文字處理得到特徵值(text mining 和 data  mining 不一樣)

Text Preprocessing:
1.POS Tagging (Part-1.of-Speech Tagging) 詞性分析
http://en.wikipedia.org/wiki/Part-of-speech_tagging
對於自然語言要處理,尤其左右的字詞猜測他的字義
http://search.cpan.org/dist/Lingua-EN-Tagger/Tagger.pm  英文斷詞處理
http://ckipsvr.iis.sinica.edu.tw/ 中文斷詞處理

2.Stemming: 把字根還原為最初的狀態
www.cis.scu.edu.tw/oproom/95projm.ppt
http://tartarus.org/martin/PorterStemmer/

3.Terms (Features):
選出重要的字

4.Feature Selection: 選擇重要的字
依據功能選擇所需要的詞性列表,並決定字詞的極性(正向或負向)
反諷字的處理很困難,很難用電腦判斷。
Too many of then:(篩選法則)
TF-IDF:
Entropy(熵) : 對於一個語言的所有詞彙集合 (詞集) 而言,整個詞集平均的詞彙編碼長度,稱為該詞集的『熵』或亂度,定義為如下公式。簡單來說就是「亂度」
http://ccckmit.wikidot.com/st:maximumentropy
Mutual information:
X^2 test statistic:

TF-IDF: Term Weighting scheme
http://ccckmit.wikidot.com/st:maximumentropy
Term frequency : 「the」出現頻率很高,但不重要
Inverse document frequency:idfi = log(N/ni) 要取 log 比較接近正確
TF-IDF:fij * idfi

Term-Document Matrix

Applications: IR Indexing

Vector Space Model
cosine-based measure
向量的內積與外積
searching 如果兩個很不像則是 0 , 很像則趨近 1
Ranking

Applications: Text Categorization (文字分類)

Classifiers:
1.Collected data
2.Overfitting problem
分類器在到達一個臨界點,error 就不會在繼續下講反而會上升

Common classifiers
KNN
Naive Bayes
Support vector machine

KNN classifier
不用訓練,但是靠近誰類別就會越像
但是得到答案會需要更多的時間

Support Vector Machine
1.SVM 簡單的只到線性的分割,有條線可以做到最佳分割 OSH

Applications: Text Summarization
Abstraction --> Extraction

Extraction Approach

Agglomerative Clustering
Dendrogram




----

concepts, techniques and applications

Moneyball 的故事
找出特定的組合,或有趣的知識。

Gordon Moore 定律:每 12 個月,同面積電晶體數量會提升一倍。

有 data mining 的工具,即使資料輸入後也不一定能夠找到特定的結果。
所以想要有好的結果,一定要經過特別的設計才會出現。

費式數列
http://home.educities.edu.tw/mario123/problems/fibonacci.htm

資料探勘常用於市場的分析、信用卡詐欺、書籍推薦

A KDD process 流程
Data Cleaning --> Data Warehouse --> task-relevant data --> Data Mining --> Pattern Evaluation --> Knowledge

將資料定義屬性,將資料量化才可以分析
資料探勘的工具可以做自動化
的處理,但是無法了解資料意義。

1.Data Cleaning
這階段很不起眼,但是很重要。

將舊的資料分類是為了將新的資料做預測,每個屬性就是一個維度.....
透過分析顧客具有的屬性,推測新進客戶是否是好客戶或是不好的客戶

找出因物品最接近的類別,透過資料分類後的結果。就是資料中間的距離,,,,,,
資料的距離和屬性的數量有關係,所以核定一的屬性有很大的關係。

Nearest Neighbor Classification
K= 5 ~ 7 選用奇數避免平手

找出一個模型替代 500 萬筆的資料,用一個函式表現。
資料回歸-為資料建立模型,以便於快速分析出資料。

建立模型的幾種方法:
Model: Decision Tree
類神經網路Biolgical Neural Network
SVM: 支撐向量:找到一條線可以把不同的類別分開,直線如果往兩邊撐開舊會成為一個帶掌區域。帶狀區域最大的優先選擇。

第二種:Cluster Analysis

找出關連的法則,不是數據明顯舊可以。

字根還原

語意處理會有盲點,在自動分類中處理語意。用自然語言的處理方式。
















2012/09/01

雲端運算和網路服務 - 黃三益


雲端運算:
雲端運算的演進流程,Main Frame , App Client/Server , 3 tir 架構(browser) . Clound ??
big data 是最近流行的主流

雲端的未來:
電腦在雲端,需要才付費(租賃)
Server consolidation(合併)
Aim to  
# Reduce cost
# Increase utilization, reliability, scalability, and performance(利用、可靠、可變容量、效能)
# Public Clound v.s. Private Clound 

Cloud Layer
SaaS
PaaS
IaaS

IaaS Terms:
# VirtualMachine
# MapReduce
# Hadoop

Example MapReduce Job: Word Count

Amazon EC2 + S3 
CEO: 我們是家資訊公司,只是剛好賣書。
http://aws.amazon.com/ec2/pricing/ 上傳免費,下載要錢

Characteristucs for PaaS:
Multi-tenancy architecture 應用程式租賃
整合 web service and databases
application development / deployment

Example PaaS:
# Google App Engine
# Microsoft Azure

SaaS:
製造雲、服務雲、醫療雲

Web Service:
解決資料重複更新的問題,不用自己在見建立資料。只要透過 api 就可以更新。
解決方式:
每個 web 應該都是一個 service 
可 re-use , SOA 架構
Web Services Technology stack
http://www.ibm.com/developerworks/webservices/library/ws-appint/wsstack2.gif

提供 webservice 搜尋的網站
https://www.seekda.com/


8/20 雲端運算和網路服務心得:
這課程黃三益主任介紹雲端服務的組成元件,並且以實際的例子引導讓我們了解實際上雲端服務的運用有哪些。雲端服務是目前常見對於網路服務應用運作模式的稱謂,雲端運算是一種網路應用的運作模式,其需求能夠方便存取網路上所提供的電腦資源,
其包含5種特徵、4種建置模式、3項服務,主任以易懂的方式介紹比較常見的有3種服務模式:
(IaaS)基礎設施即服務:通常指的是虛擬化主機,透過虛擬化主機的租用提供基礎設施的服務,可以直接提供一台虛擬化的運端機器並且運載Linux or Windows 作業系統,以時間、或流量計費。目前以 Amazon EC2 、 hinet hiclound 為較知名的服務提供商。
(PaaS)平台即服務:目前以Google App Engine 及 Microsoft Azure 為較知名的提供商。提供程式開發的平台環境。但在2010年salesforce 收購 HEROKO 後,也成為另一個較知名的供應平台。
(SaaS)軟體即服務:這部份因時間因素所以沒講到,查了一下資料目前以 http://www.salesforce.com 是國外較知名的供應商,提供 CRM 及社群的服務。國內則有 http://www.ezhotel.com.tw/ 提供飯店的訂房系統及今金流。

另一個主題是介紹網路服務 web service ,因為當一個網路上的網站系統可以開放 API 提供給其他的人申請使用,他就成為了一個 SOA 架構下的 WEB service 。主要目的為 Data 在建立的時候要寫一個給機器看的介面,以提供資料的重複使用。 目前業界常用的實作方法為 RESTful 而學界比較理想使用 SOAP  ,主任並以圖書館的 OAI 的架構作介紹,介紹該服務如何透過標準的化的資訊交換達到平台資訊交換的功能。

上完這次課程,想到之前看到的一篇文章(翻譯),內容描述 amazon 經理人貝佐斯,在約2002年就對於對於Amazon網站做出了影響巨大的決定從內到外的服務架構化平台化,提供服務介面(service interfaces),所以做出了AWS這樣的服務,發展了開發了kindle這樣的裝置,讓整個amazon平台化。個人的感覺 WebService 是個程式開發很理想化的目標,如果生活可以無壓力的寫程式,我也會想選擇全部系統的 SOA 為導向來開發,並且開發系統間的溝通也以 WebService 來做溝通。然後有機會可以在快速變動的網路市場上求得一線生存的空間,在家裡就可以靠網站賺錢......XD.