2016-04-30 51 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