• 沒有找到結果。

系統架構與資料前處理

3-1 系統架構與流程

圖 3.1 系統流程圖

本論文的系統架構可分成下列部分:資料前處理(Data Preprocessing)、字詞

分析(Term Statistic)、特徵字詞重要性評估(Candidate Feature Evaluation),如圖 3.1

所示。

Expert Commentaries of Camera

Data Preprocessing

Term Statistic Candidate Terms

Feature Set Candidate Feature

Evaluation Term Frequency

List

Forum Documents

Data Preprocessing

Term Statistic Candidate Terms

系統流程簡要說明:從產品評論論壇中取回資料後,將網頁資訊及其他不相

關的頁面內容,例如超連結、網頁標籤以及沒有意義標點符號等濾除,只取出使

用者發表的文章與回覆的文字,接著使用詞性標註的方式對所有的句子進行詞性

標記。取出標記為名詞的字詞,並統計在各個不同廠牌出現次數、計算 TF、MI

等等字詞的特徵值,取出可能的候選特徵字詞。針對較不顯著的特徵字詞,我們

透過 KL-divergence 的計算,將其相較於其他廠牌產品屬於較特殊或有意義的特

徵字詞找出。候選字詞中可能包含過多無意義或不重要的字詞,在此我們加入相

機介紹網站,同樣進行各種字詞統計分析,我們並利用不同文件庫間字詞分析方

法,使用 KLCF、JSD 以及常見字詞列表方式將其做過濾擷取,形成一個候選特

徵字詞集合,透過結合各種分析方法所得的權重值排序即可得到一個產品特徵字

詞列表。

3-2 資料蒐集與前處理

本論文針對產品評論進行分析,我們取用一個數位相機的論壇作為資料來

源,在論壇中,除了使用者會發表產品評論以外,其他使用者亦可針對該使用者

的評論提出回應,同時也有使用者對於該產品的使用心得,故我們將這些資料蒐

集存入資料庫中,以便之後進行查詢時使用。論壇文章中資料取回後,因包含網

頁資訊及其他不相關的頁面內容,例如超連結、網頁標籤等雜訊濾除,萃取出使

用者發表的文章與回覆的文字,接著透過自然語言處理的方式,將文章內容中的

句子進行語意詞性分析,取出可能的特徵字詞之後對其進行擷取與過濾,以下將

各別介紹前處理的細部流程與方法。

3-2.1 文件庫建立與處理 3-2.1-1 論壇文件庫建立

本論文選取出相機論壇文章中常被使用者提及的特徵,故我們選擇相機愛好

者推薦的論壇 Imaging Resource (http://www.photo-forums.com/),網站上的資訊針

對各別品牌有不同的討論區塊,如圖 3.2 所示。各個品牌底下會有不同的討論議

題與相機內容,如圖 3.3 所示。針對大量網頁文章內容的蒐集,透過網頁的連結

與網頁標籤等內容分析,使用 Python 程式語言抓取文章中的段落文字。網頁擷

取分成下述兩個部份:

1. 對各別品牌內的網頁資訊,透過 Python 程式取出頁面中的包含完整的超

連結標籤(hyperlink)以及連結錨文字(Anchor text),以此論壇為例:

<a href="/WebX?50@112.BWaFcCNtmQY.0@.ee92556/0">

Sony Cybershot DSC-P72 Discussion</a>。

2. 討論文章頁面中取出文章內容部份分成兩個部份,標題作者發表內容以

及其他使用者回應內容部份。擷取作者發表內容時網頁標籤必頇包含表

格資訊及“ Original Topic Message”,如下述:

<td bgcolor="#2B5A78"><B>Original Topic Message</B></td></tr><tr>

<td bgcolor="#F6F6FF">Per reader request,…</td></tr>

擷取其他使用者回應內容部份,則在表格內容中需要包含表格資訊之

外,尚需有段落標籤<p>,如下述:

<td bgcolor="#F6F6FF">

<p>

Can some one PLEASE explain to me…<br><br>

圖 3.2 相機論壇的品牌分頁

圖 3.3 論壇中的討論文章格式

取出的文章格式如圖 3.4 所示。

圖 3.4 論壇網頁文章內容 3-2.1-2 相機介紹文件庫建立

相機論壇中的文章,我們可以取得很多特徵字詞的資訊,但是因為論壇文章

中會出現的字詞很多時候包含了個人使用習慣、或者網路用語等等,使得在詞性

標註等等會出現誤差,此外亦會包含很多一般習慣口語的字詞,這些並非我們主

要想要獲得的特徵資訊,所以我們想要對這些字詞做進一步的擷取與過濾。

首先,為了讓我們擷取出來的特徵字詞,對於相機特徵的描述更具有代表性,

我們選擇取用了另一個相機網站(http://www.whatdigitalcamera.com/),這個網站主

要是介紹相機的選購與如何使用,如下頁圖 3.5 所示,這個部份有助於我們了解

購買產品時主要參考的特徵字詞。此外該網站也包含各個廠牌產品的評論,這些

評論都是由專業的評論家所撰寫,故我們選擇此網站購買指南與產品介紹評論兩

個部份,作為輔助我們找出重要特徵字詞的外部資源。針對網站的資料蒐集亦是

採用 Python 程式撰寫抓取網站中文字的部份,取出文字部分之後對其進行斷句

處理。如下圖 3.6 所示。取出文章內容之後,同論壇文章的處理方式,圖 4.3 顯

示我們對其句子進行詞性標註之後的結果。

圖 3.5 相機介紹網站

圖 3.6 相機介紹網頁的文字 3-2.2 斷句處理與詞性標註(Part-of-Speech tagging)

文件庫建立之後,我們會以句子為單位對特徵字詞進行分析,所以必頇先對

文件庫的文件做斷句處理。論壇或討論區的文字,受到使用者的使用習慣,會

加入一些表情符號等特殊文字,故在斷句的時候,我們會將連續出現兩個以上

的標點符號進行取代的動作,例如: “

^^

”, “

:(

” 等取代成“ .”。

我們在討論相機的外觀(design)、鏡頭(lens)、快門(shutter)、光圈(aperture)

等等時,而這些字詞往往皆為名詞,故我們假定文件庫中名詞為特徵字詞候選,

所以我們必頇先對句子進行詞性標註。詞性標註是對一個句子中的每個字詞,標

註其文法中對應的詞性,在此我們採用 Stanford Natural Language Processing

Group (http://nlp.stanford.edu/software/tagger.shtml) 所提供的 Stanford Log-linear

Part-Of-Speech Tagger API,該應用程式已廣泛運用在文件集合的詞性標註處理,

理(stemming),例如:s、es、ies 等名詞的原型處理。論壇與相機介紹文件庫詞

性標註的結果如下圖 3.7、圖 3.8 所示。

圖 3.7 論壇文件斷句結果與詞性標註結果

圖 3.8 相機介紹文件斷句與詞性標註結果

3-3 建立文件內容索引

各個廠牌會常出現的特徵字詞不同,針對不同的廠牌與特徵字詞之間的關

係,我們需要一個快速可以算出字詞在句子中出現的頻率與句子數的方法,透過

Apache Lucene (http://lucene.apache.org)我們可以快速地取得相關的資訊以加速

後續處理。

3-3.1 Lucene 概要介紹

Lucene 是由 Apache 所提供的全文檢索引擎,以 Java 程式建立的一個完整

本機文件搜尋檢索,現今很多搜尋應用系統,皆是以 Lucene 來實現,如知名的

書籤網站(http://digg.com/)、台灣科技新聞網站(http://taiwan.cnet.com/),都是透過

這個程式庫來完成。

Lucene 的架構主要可以分成兩大部分,建立文件索引與索引檔檢索文件,

以下簡單敘述其主要功能與用途。

1. 建立文 件索 引: 在 Lucene 中 建立 索引的 單位 是 Document ,每一個

Document 物件底下又可包含數個 Field,即為資料的屬性欄位,可以儲存

如文件來源路徑、文件編號、以及文件內容等分別存入各個對應的 Field

中,程式便可以透過 IndexWriter 寫入索引檔,IndexWriter 具有將新文件

寫入索引檔的功能。此外 Lucene 也提供 Analyzer,可以將 Field 中的句子

進行斷詞分析,供系統建立索引檔後針對各別字詞進行計算等其他用途。

IndexReader 則可以讀取與刪除索引檔中的文件資訊。

2. 索引檔檢索文件:當我們建立好文件索引檔之後,我們即可對欲查詢的關

鍵字詞進行搜尋,Lucene 使用 QueryParser 是利用查詢式對使用者所下的

查詢進行分析,因使用者查詢並不一定只包含一個查詢詞,故可透過不同

的查詢式,如:布林查詢(Boolean Searches)、模糊查詢(Fuzzy Searches)、

範圍查詢(Range Searches)等,經過 QueryParser 得到不同的分析結果。程

式在經過分析之後,將結果傳給 IndexSearcher 對指定的索引檔進行搜尋。

搜尋得到結果可透過 Hits 來取得,Hits 包含搜尋到相關的 Document 數

量、Document 的內容等資訊,此即為一本機文件檢索結果。

3-3.2 建立文件索引

本篇論文中主要是透過 Lucene 建立索引檔,可快速取得字詞頻率,並用來輔

助計算兩個字詞在同一句子同時出現的程度。以下為本篇論文的 Document 物件

內容,如下圖 3.9 所示,以及索引建立與搜尋的說明與流程圖,如圖 3.10 所示。

圖 3.9 Document 物件結構

Document

Filepath Docnum Context POStag

圖 3.10 文件檢索流程圖

首先,文件庫經過前處理後以句子為單位,我們對這些句子進行詞性標註之

後,分別將文件的路徑、文件編號、文件的原始內容、以及詞性標註過後內容,

一一存入 Document 物件中,將這些 Document 物件逐一寫入索引檔中。因為文

件庫內容皆為英文,故我們選擇 StandardAnalyzer 來進行斷詞分析。

我們要知道哪些特徵對於各別廠牌會較有相關,所以當我們在查詢時,針對

廠牌與特徵之間出現的關係並進行運算,在第四章提到對於字詞的分析時我們會

去計算共同出現的情況,以及特徵各別出現的情況,在查詢式的部分我們採用了

布林查詢與範圍查詢的查詢式,透過布林查詢,我們找出包含廠牌和特徵共同出 Document

IndexWriter Analyzer

Index

IndexSearcher Query

QueryParser

Relevant Documents

Hits

現的句子(Brand AND Feature),與特徵或廠牌出現的句子(Brand – (Brand AND

Feature) & Feature –(Brand AND Feature));透過範圍查詢,我們限定其兩個字詞

間出現的距離要在前後五個字詞內出現才具有一定程度的相關性。

相關文件