blog.Ring.idv.tw

Web Scraping for CKIP中文斷詞系統

Web Scraping for CKIP中文斷詞系統


自然語言處理的研究領域中,「Word Segmentation(斷詞)」是一個相當重要的技術,舉個英文的例子來說:

I like to play baseball.

斷詞後的結果:

I」、「like」、「to」、「play」、「baseball

因為英文字句中的各個單字之間都有著「空隔」來區隔,但中文呢?卻毫無如此的規則可循~

所以利用詞庫的方式是一種解決方案~ 這裡介紹利用「中研院-CKIP中文斷詞系統」來協助我們進行中文的斷詞工作~

雖然你也可以在「中研院-CKIP中文斷詞系統」申請使用~ 不過需要自行撰寫相關的Socket程式並剖析XML資料~

所以本文提供使用Web Scraping的方式來達成~

CKIP.php

<?php
/**
 * Date: 2008/06/06
 * Shen(http://blog.ring.idv.tw)
 */
require_once "HttpClient.php";
class CKIP
{
	private $param = "";
	private $body = "";

	function __construct(){}
	public function setParam($param)
	{
		$this->param = $param;
	}	
	public function doQuery()
	{
		if($this->param != "")
		{
			$uri = "http://mt.iis.sinica.edu.tw/cgi-bin/text.cgi";
			$data = array('query' => $this->param);
			$body = HttpClient::quickPost($uri, $data);

			$regex = '/URL=\'(.*)\'\">/Us';
			preg_match($regex,$body,$match);
			$redirect = "http://mt.iis.sinica.edu.tw/" . $match[1];
			$body = HttpClient::quickGet($redirect);
	
			$regex = '/HREF=(.*)>/Us';
			preg_match($regex,$body,$match);
			$filename = str_replace(".txt", ".tag.txt", $match[1]);
			$redirect = "http://mt.iis.sinica.edu.tw/uwextract/pool/" . $filename;
			$this->body = HttpClient::quickGet($redirect);

			return true;
		}
		return false;
	}
	public function getBody()
	{
		return $this->body;
	}
}
?>

Demo

<?php
require_once "CKIP.php";
$ckip = new CKIP();
$ckip->setParam("這個東西不錯吃!");
$ckip->doQuery();
$body = $ckip->getBody();
$body = iconv("Big5","UTF-8",$body);
echo $body;
?>

2008-06-06 19:40:32

3 comments on "Web Scraping for CKIP中文斷詞系統"

  1. 1. 小朝 說:

    您好
    我最近也在研究斷詞這一塊
    我有Run過您所放上的這支程式
    可是發現沒有HttpClient.php所以無法跑這支程式
    可以請您放上來嗎?
    謝謝您

    2011-10-25 21:39:51

  2. 2. Shen 說:

    HttpClient程式你Google一下就有許多類似的程式了,純粹只是下個Http Request而已~

    2011-10-25 22:07:37

  3. 3. 小朝 說:

    謝謝您, 已解決

    2011-10-28 11:48:46

Leave a Comment

Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: Ads :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment

::: 人氣指數 :::

今日人氣:382

累積人氣:3118258


::: 線上人數 :::

counter