comp_csv.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. require_once "../path.php";
  3. require_once "../dict/turbo_split.php";
  4. require_once "../redis/function.php";
  5. global $result;
  6. $myfile = fopen(_DIR_TEMP_ . "/comp.csv", "a");
  7. $filefail = fopen(_DIR_TEMP_ . "/comp_fail.txt", "a");
  8. $iMax = 10;
  9. /*
  10. $dns = "sqlite:" . _FILE_DB_WORD_INDEX_;
  11. $dbh_word = new PDO($dns, "", "", array(PDO::ATTR_PERSISTENT => true));
  12. $dbh_word->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  13. $query = "SELECT * from wordindex where 1";
  14. $stmt = $dbh_word->query($query);
  15. while ($word = $stmt->fetch(PDO::FETCH_ASSOC))
  16. */
  17. $redis = redis_connect();
  18. if ($redis == false) {
  19. echo "no redis connect\n";
  20. exit;
  21. }
  22. $i = null;
  23. $counter = 0;
  24. while ($words = $redis->sscan("pali_word", $i)) {
  25. # code...
  26. foreach ($words as $key => $word) {
  27. # code...
  28. $arrword = split_diphthong($word);
  29. if (count($arrword) > 1) {
  30. fputcsv($myfile, array($word, implode("+", $arrword), 0.99));
  31. }
  32. foreach ($arrword as $oneword) {
  33. $counter++;
  34. $result = array(); //全局变量,递归程序的输出容器
  35. mySplit2($oneword, 0, $_express, 0, 0.01, 0.01, true, true);
  36. if (isset($_POST["debug"])) {
  37. echo "正切:" . count($result) . "\n";
  38. }
  39. mySplit2($oneword, 0, $_express, 0, 0.01, 0.01, false, true);
  40. if (isset($_POST["debug"])) {
  41. echo "反切:" . count($result) . "\n";
  42. }
  43. /*
  44. #正向切分
  45. mySplit2($oneword, 0, false);
  46. if (count($result) == 0) {
  47. #如果没有 逆向切分
  48. mySplit2($oneword, 0, false, 0, 0.8, 0.8, true);
  49. }
  50. */
  51. echo "{$counter}-{$oneword}:" . count($result) . "\n";
  52. if (count($result) > 0) {
  53. arsort($result); //按信心指数排序
  54. $iCount = 0;
  55. foreach ($result as $row => $value) {
  56. $iCount++;
  57. if ($value > 0.8) {
  58. fputcsv($myfile, array($oneword, $row, $value));
  59. } else {
  60. fputcsv($filefail, array($oneword, $row, $value));
  61. }
  62. if ($iCount >= $iMax) {
  63. break;
  64. }
  65. }
  66. } else {
  67. fwrite($filefail, $oneword . "\n");
  68. }
  69. }
  70. }
  71. }
  72. while ($i = $words[0] != 0);