百度API:xlongwei
這個人提供的接口很多啊,也很實用:Word轉Html、Word轉Pdf、屬性配置、手機號段、微信公眾號消息加密、微信公眾號消息解密、二維碼、關鍵詞、分詞、拼音、生僻字、微博短鏈接。但是很多都不感興趣的,除了一個,那就是中文分詞啊。以前某天突然對浏覽器以及編輯器中的鼠標雙擊事件直接選中詞組或者一段數字很好奇。然後問群裡人,群裡說是中文分詞,之後看書(應該是《暗時間》)也無意看到。還扯出了開始思考好多巧合不是巧合的未解決的心理問題。雖然現在的知識以及技術對自然語言還無法處理,但是用接口感受一下還是不算過分吧。
【選擇Word文檔】觸發file類型的input的click事件(代碼裡面用了jquery,也可以直接用js寫這塊就不用引入jq文件了)。然後點轉換,執行上傳+轉換。最後的鏈接就是本服務器存儲的來自API的處理文件
1 <html> 2 <head><meta charset="utf-8"> 3 <script type="text/javascript" src="./js/jquery-1.8.2.min.js"></script> 4 <script type="text/javascript"> 5 $(function(){ 6 $('#wordx').click(function(){ 7 $('#file').click(); 8 }); 9 }); 10 </script> 11 </head> 12 <body> 13 <form action="" method="post" enctype="multipart/form-data"> 14 <input type="file" name="file" id="file">15 <input type="button" id="wordx" value="選擇Word文檔"> 16 <br /> 17 <input type="submit" name="submit" value="WORD轉Html" /> 18 </form> 19 </body> 20 21 </html> 22 <?php 23 $maxSize=5*1024*1024;//5M 24 if(!isset($_FILES["file"]["error"])){ 25 exit; 26 } 27 if($_FILES["file"]["error"] > 0){ 28 echo "Error: " . $_FILES["file"]["error"] . "<br />"; 29 exit; 30 }else{ 31 /* echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 32 //echo "Type: " . $_FILES["file"]["type"] . "<br />"; 33 echo "Stored in: " . $_FILES["file"]["tmp_name"].'<br/>'; 34 echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";*/ 35 36 $suffix=substr(strrchr($_FILES["file"]["name"], '.'), 1); 37 if($suffix!='doc' && $suffix!='docx'){ 38 echo '只允許doc和docx格式word文件'; 39 exit; 40 } 41 if($_FILES["file"]["size"]>$maxSize){ 42 echo '大於'.$maxSize/(1024*1024).'Mb'; 43 exit; 44 } 45 46 $name=date('YmdHis',time()).rand(1000,10000).'.'.$suffix;//拼接文件名 47 if (file_exists("upload/" . $name)){ 48 echo $_FILES["file"]["name"] . " already exists. "; 49 exit; 50 }else{ 51 $domain=$_SERVER['SERVER_NAME']; 52 $status=move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $name); 53 //echo "Stored in: " . "upload/" . $name; 54 $url="http://{$domain}/api/upload/{$name}"; 55 if ( (!file_exists ("upload/{$name}")) || !$status){ 56 echo '上傳失敗'; 57 exit; 58 }else{ 59 //echo "<a href='{$url}'>上傳成功</a><br/>"; 60 //echo "上傳成功<br/>"; 61 } 62 63 //Word轉Html 64 65 $ch = curl_init(); 66 $url = 'http://apis.baidu.com/xlongwei/open/doc2html?url='.$url; 67 $header = array( 68 'apikey:百度API密鑰', 69 ); 70 curl_setopt($ch, CURLOPT_HTTPHEADER , $header); 71 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 72 // 執行HTTP請求 73 curl_setopt($ch , CURLOPT_URL , $url); 74 $res = curl_exec($ch); 75 $data=json_decode($res,true); 76 //var_dump($data); 77 $htmlurl=NULL; 78 if(isset($data['domain'])&&isset($data['path'])){ 79 $htmlurl=$data['domain'].$data['path']; 80 $name=$name=date('YmdHis',time()).rand(1000,10000).'.html'; 81 $status=copy($htmlurl,"html/" . $name);//網絡鏈接的文件不能用move_uploaded_file,用了copy可以 82 if($status){ 83 $htmlurl="http://{$domain}/api/html/{$name}"; 84 }else{ 85 //echo '挪動出錯'; 86 //exit; 87 } 88 echo "<a href='$htmlurl'>Html轉換完成</a>"; 89 90 }else{ 91 echo '服務器錯誤,請重試。'; 92 exit; 93 } 94 } 95 } 96 ?>Word轉Html完整代碼
Pdf類似,只是接口處有不同。感覺效果還蠻好的嘛。肯定了,又不是相反的接口。
我的神器海螺呢,還想問問二維碼什麼原理呢。
3.中文分詞
Ansj中文分詞 這是一個ictclas的java實現.
好棒,這分詞。之後順便把拼音也嵌入到分詞中去。
其中單字有多音字就會有好幾個音,比如這個吃(chi ji)、吐(tu3 tu4),所以判斷存不存在header(header 是拼音的首拼)然後空格分割取第一個(因為看到第一個大多數比較准確且自己也分辨不出第幾個是最好的啊)就OK。
挑一個BUG:不了了之 bulelezhi