2016-04-30 14 views
0

Ich habe einen Code in PHP für Schlüsselwörter, die von bengalischen Texten suchen. Es gibt Ausgabe, aber ich habe drei Probleme konfrontiert -Stoppwörter funktionieren nicht für die Schlüsselwortsuche

  1. Es ist nicht ignorieren die Stoppwörter Array ich erklärte.

  2. Es soll 10 Schlüsselwörter geben, aber manchmal gibt es 11/12/13 Schlüsselwörter.

  3. Es gibt manchmal die gleichen Worte wie die Ausgabe.

Dies ist mein Code:

<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> 

Beispieltext:

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

Antwort

0

preg_replace() nicht richtig auf Multi-Byte-Strings arbeiten, die Sie verwenden.

Sie müssten stattdessen mb_ereg_replace() dokumentiert here verwenden.