|
|
|
มีปัญหาอยากจะถามหน่อยครับ เกี่ยวกับโปรแกรมการตัดคำ |
|
|
|
|
|
|
|
คือเอามี code แรก คือ ป้อนไฟล์
Code (PHP)
<form action="index2.php" method="post" name="form1" id="form1">
Insert Text : <br />
<textarea name="text" rows="5" id="text" style="width:100%"></textarea><br />
<input type="submit" name="Submit" id="Submit" value="Submit" /> <input type="Reset" name="Reset" id="Reset" value="Reset" /><br /><hr />
</form>
ต่อไปคือ เราใช้โปรแกรมตัดคำอะครับ
Code (PHP)
<?php
if($_POST["text"]!= ""){
function swath($input_text){
$input_filename= "test.txt";
$output_filename= "output.txt";
$input_text = iconv('UTF-8', 'TIS-620', trim($input_text));
file_put_contents($input_filename, $input_text);
system( SWATH .'/swath.exe -b " " -d ' . SWATH . '/swath -m long < ' . $input_filename . ' > ' . $output_filename);
$raw = file_get_contents($output_filename);
$raw = iconv('TIS-620', 'UTF-8', rtrim($raw));
unlink($input_filename);
unlink($output_filename);
return $raw;
}//END FUNC SWATH
function multiexplode ($delimiters,$string) {
$ready = str_replace($delimiters, $delimiters[0], $string);
$launch = explode($delimiters[0], $ready);
return $launch;
}
$trim = str_replace( " ", "", ($_POST["text"]) );
$w = swath ($trim);
$ex = multiexplode(array(" "),$w);
}
แล้วเราอยากให้มันแสดงผล
เช่น ลักษณะของผู้ที่มี ความสามารถด้านการ เรียนภาษาให้เก่ง เป็นผู้ที่มีความสามารถทางด้านการอ่าน
เป็น ลักษณะ ของ ผู้ ที่ มี ความ สามารถ ด้าน การ เรียน
ภาษา ให้ เก่ง เป็น ผู้ ที่ มี ความ สามารถ ทาง ด้าน การ อ่าน
ให้พอถึงประมาณหนึ่่ง มันจะตัดบรรทัดการตัดคำ
อีกอย่าง คืออยากเอา แต่ละคำที่ได้มาทำเป็น check box ให้ผู้ใช้เลือกว่าจะเอาคำไหนบ้าง
แล้วเรามีไฟล์ Code (PHP)
Code (PHP)
[php]<?php
if($_POST["q"]!=""){
//echo $_POST["q"];
echo $_POST["q"] ."<hr / >";
$q = trim( $_POST["q"] );
if( ord ( $q ) > "160" and ord ( $q ) < "250"){
$url = "http://th.asianwordnet.org/services/dictionary/xml/th2en/".urlencode($q);
}else{
$url = "http://th.asianwordnet.org/services/dictionary/xml/en2th/".$q;
}
$page = file_get_contents($url);
$xml = simplexml_load_string($page);
$str = "";
if($xml->rows > 0){
foreach($xml->data->item as $key => $item){
if($item->words != ""){
if( $item->ss_type == "n" ){
$str .= $item->words;
$str .= ", ";
if($item->translate){
$str .= $item->translate;
$str .= ", ";
}//END IF
}//END IF
else{
echo "ไม่ใช่คำนาม" ."<br />";
}
}//END IF
}//END foreach
}//END IF
function multiexplode ($delimiters,$string) {
$ready = str_replace($delimiters, $delimiters[0], $string);
$launch = explode($delimiters[0], $ready);
return $launch;
}
$ex = multiexplode(array( " ", "," ),$str);
$stack = array( );
for($b=0; $b <= count($ex); $b++){
if( $ex[$b] != "" ){
array_push( $stack, $ex[$b]);
}
}
echo "<pre>";
print_r($stack);
echo "</pre><hr>";
foreach ($stack as $value) {
$link = "http://th.wikipedia.org/wiki/".$value;
echo "<a href=".$link.">". $value ."</a><br>";
}
}//END IF
?>
[/php]
ข้างบน ไฟล์ต้นฉบับ เป้นการ input ทีละคำอะ เราอยากเอาคำที่เราตัดมา ง่ายๆ เชื่อมจากไฟล์ก่อนหน้า ต้องทำไงอะครับ อยากให้มันรับค่าจาก check box ถามเยอะไปไหม =.=
Tag : PHP
|
|
|
|
|
|
Date :
2013-12-13 05:06:35 |
By :
conankungz |
View :
1086 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมว่าถ้าข้อความติดกันเลยยากนะครับในการจะตัดออกมา นอกเสียจากว่ามีการเก็บ ข้อความไว้เพื่อเปรียบเทียบอยู่แล้ว เช่นคำว่า แล้ว สมมุติข้อความเป็น "ถ้าเป็นแบบนี้แล้วเราเลิกกันเถอะ" แล้วเราก็เปรียบเทียบเพื่อตัดคำว่า "แล้ว" ออกมา ไปทำเป็น checkbox อะไรก็ว่าไป
ผมเลยอยากแนะนำว่า ถ้าเราจะตัดเป็นประโยคเอาจะได้ไหม และจะได้ง่ายขึ้นด้วย หรือจะตัดเป็นคำก็ต้องคั่นด้วยอะไรสักอย่างนึงเพื่อที่จะได้เอาไปตัดได้ถูก อาจจะเป็นช่องว่าง หรืออะไรก็ว่าไป
เช่น ลักษณะของผู้ที่มี ความสามารถด้านการ เรียนภาษาให้เก่ง เป็นผู้ที่มีความสามารถทางด้านการอ่าน
จากนั้นก็ใช้ explode ในการแยกออกมา แล้วไปวนลูปแสดงเป็น checkbox ตามที่คุณต้องการ ถ้าไม่ใช่แบบที่ต้องการก็รอท่านอื่นนะครับ
|
|
|
|
|
Date :
2013-12-13 10:18:22 |
By :
Manussawin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อิอิ มาตามเก็บ swath กับ web service ไปเล่นมั้ง
ปล. ทำได้ขนาดนี้แค่ลูปเพิ่ม checkbox เข้าไปไม่ใช่เรื่องยากแล้ว
|
|
|
|
|
Date :
2013-12-13 15:25:44 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|