2016-04-30 81 views
0

我在PHP中使用了關於從孟加拉語文本搜索關鍵字的代碼。它給出輸出,但我面臨三個問題 -停用詞彙不適用於關鍵字搜索

  1. 它不會忽略我聲明的停用詞數組。

  2. 它假設給出10個關鍵字,但有時它會給出11/12/13關鍵字。

  3. 它有時會給出與輸出相同的單詞。

這是我的代碼:

<form enctype="multipart/form-data" action="?action=extractKeyWords" method="POST"> 
     <div class="heading1">গীতিকার অনুসন্ধান</div> 
     <div class="heading2">Find Out Lyricist</div> 
     <label>Insert a text file of Bengali song lyrics</label> 
     <input type="file" name="uploadedfile" class="upload"> 
     <input type="submit" value="GO!" name="btn" class="button"> 


     <?php 
     if (isset($_GET['action']) == 'extractKeyWords') { 
      $target_path = $_FILES['uploadedfile']['name']; 

      function extractKeyWords($string) { 
       mb_internal_encoding('UTF-8'); 
       $stopwords = array('যায়','এরপর', 'আমি', 'একটি', 'এবং', 'আর', 'অথবা', 'তুমি', 'সে', 'ওরা', 'এ', 'ঐ', 'ও', 'কিভাবে', 'মধ্যে', 'থেকে', 'যেভাবে', 'হয়', 'বা', 'এর', 'এক', 'তার', 'উপর', 'ওখানে', 'সেখানে', 'তা', 'সেথা', 'ছিল', 'হবে', 'কি', 'কখন', 'কোথায়', 'কে', 'সাথে'); 
       //$string = preg_replace('/[\pP]/u', '', trim(preg_replace('/\s\s+/iu', '', mb_strtolower($string)))); 
       $string = preg_replace('/\s\s+/i', '', $string); 
       $matchWords = array_filter(explode(' ', $string), function ($item) use ($stopwords) { 
        return !($item == '' || in_array($item, $stopwords) || mb_strlen($item) <= 2 || is_numeric($item)); 
       }); 
       $wordCountArr = array_count_values($matchWords); 
       arsort($wordCountArr); 
       $wordCountArr = array_slice($wordCountArr, 0, 10); 
       return $wordCountArr; 
      } 

      $file = file_get_contents($target_path, true); 
      $words = extractKeyWords($file); 

      Print "<div class='output'>Keywords: " . implode(',', array_keys($words)) . "<div>"; 
     } 
     ?> 
    </form> 

示例文字:

ধিতাং ধিতাং বোলে এ মাদলে তান তোলে, 
তার আনন্দ উচ্ছলে আকাশ ভোরে জোছনায়, 
আই ছুটে সকলে এই মাটির ধরা তলে, 
আজ হাসির কলরোলে নতুন জীবন গড়ি আই, 
আয় রে আয় লগন বয়ে যায়, 
মেঘ গুর গুর করে চাদের সীমানায়, 
পারুল বোন ডাকে চম্পা ছুটে আয়, 
বর্গিরা সব হাঁকে কোমর বেধে আয়, 
আয় রে আয় আয় রে আয়, 
আয় রে আয় আয় রে আয় 

回答

0

preg_replace()不會多字節字符串,你使用的正常工作。

您將需要使用mb_ereg_replace()記錄here