1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708
|
--(2007/05/12)(yusuke)
単語自体のような出現頻度の低い素性を扱う方法を検討中
--(2007/05/09)(yusuke)
例文から変換結果を得てパラメータを更新すると、別の変換結果が得られる
これを繰り返すことで様々な誤変換を得ることができる。
->make update_params2を使う
--(2007/04/25)(yusuke)
「運転席|側」のように接尾辞は別文節にする
--(2007/02/28)(yusuke)
「忙し」(せわし)のように形容詞の語幹だけ使うことがまれにある
anthy-8700 released
recordの単語をtextdicに移すコードを削除
--(2007/02/23)(yusuke)
頻度関係の誤変換が目立つようになってきた
--(2007/01/28)(yusuke)
hmmじゃなくなったので、変数名等の変更中。->done
次はiisを変更する->done
--(2007/01/27)(yusuke)
utf8化は完了
MEMMは止めて経験的確率をハードコードすることにした
当面の間はコーパスの量を増やすことで性能向上を図る
例文を増やすと自然なコードで性能が稼げる
素性を増やすときは正誤の識別に貢献しているかで順位を付け,高い物のみを用いる
文節の素性,連接の素性を分離して複数の分布から確率を計算するという手も考えられる
--(2006/11/17)(yusuke)
10と10では接尾辞の付き方が違う←修正済み
--(2006/11/5)(yusuke)
anthy-8700は下記のコードを併存させる
*PRIVATEDICセクション(次のリリースで消すかも)
*texttrie EUC-JPセクション
*texttrie UTF8セクション
その後で、EUCセクションからUTF8セクションへ単語を
移動するコードを追加する
現時点ではEUC-JPモードで登録された単語はEUC-JPのセクションに
登録される
--(2006/11/4)(yusuke)
個人辞書のストレージをEUC-JPとUTF8の両方を使うようにした
--(2006/10/22)(yusuke)
コーパスを増やしながらチューニングすると、コーパスの量に応じた
いろいろな現象が発生してる。
--(2006/10/21)(yusuke)
last-recordのUTF8化
既存のEUCのファイルがあれば、そのまま使う
なければ、.utf8というsuffixを付けて新規作成
--(2006/09/29)(yusuke)
文節X, Yと連続する確率は
P = 1/z * exp (f_c・λ)
ここでcはXのクラス
λはXの付属語とYのクラスを含むベクトル
--(2006/09/16)(yusuke)
文節X, Yと連続する確率は
P = 1/z * exp (f_c・λ_x)
ここでcはYのクラス
--(2006/04/14)(yusuke)
久々の更新
テスト機構をつけた
--(2004/07/22)(yusuke)
recordを全部読むと遅いので、必要な時だけ読むsectionも作ろうと思う
--(2004/06/16)(yusuke)
*名詞化動詞の後続に来るのは名詞のあと+名詞35のあと
--(2004/05/30)(yusuke)
「(」「)」などの一文字で単独の文節になって欲しいものに
新しい品詞を割り振る
--(2004/04/26)(yusuke)
履歴による候補の順序変更が動いた、要チューニング
anthy-azik.elを追加したが、ロードが遅い
--(2004/04/18)(yusuke)
履歴による候補の順序変更
--(2004/04/13)(yusuke)
anthy.elでauto-fill-modeが効かないらしい->修正できた
--(2004/03/17)(yusuke)
文節の学習は、語幹+文節クラスをベースにしよう
--(2004/03/09)(yusuke)
「ありませんし」みたいなのは、文末フラグが欲しい
--(2004/02/11)(yusuke)
単語の関係はhashを引いてから検索を実際に行う。これをdiclibのレイヤで行う。
--(2004/02/07)(yusuke)
用例辞書を復活させた
--(12/26)(yusuke)
修飾語は被修飾語の前の方を修飾する場合と後ろを修飾する場合がありそうな気がする
--(12/16)(yusuke)
「みぶんるい」の一つめの文節を「み」まで縮めると何故か「未|文|類」になる
--(11/9)(yusuke)
ユニコード化した時のエンコーディング
辞書ソース EUC-JP
辞書ファイル UTF-8
xchar UCS4
cstr EUC-JP
--(10/16)(yusuke)
サ変名詞の接尾辞を新設
--(9/21)(yusuke)
上一段活用の動詞の語幹 + "" = 連用形
というように0文字のパートが存在する
--(9/17)(yusuke)
#RTは処理できてるかな
--(9/2)(yusuke)
metawordの結合のためには、文節の最後の要素の品詞を知らないといけない。
ユニコード化
内部 UTF-32
外部 とりあえずEUCのまま
辞書エンコーディング UTF16
--(8/7)(yusuke)
付属語グラフの終端に属性を付ける。
未然、連用、終止、連体、仮定、命令、主格、所有格、、
--(8/1)(yusuke)
活用はconjugateじゃなくてinflectionらしい
--(7/31)(yusuke)
anthy_get_nth_dic_ent_strでコピーした
文字列を返す必要があるのか要検討
--(7/26)(yusuke)
word_list->part[].{from,len}が
それぞれまともか要チェック
--(6/30)(yusuke)
struct_ratioを文節の評価に入れたい
--(6/28)(yusuke)
区切りの検索を幅優先に変更した
--(6/21)(yusuke)
付属語の辞書を自作しようかしら
活用表の先頭のマッチングを書き換えないと
「サ変未然形」が「サ変」にもマッチする
--(6/15)(yusuke)
「する」の扱いがまずい
--(6/10)(yusuke)
何故か残っていたmkanthydic/struct.txtを消した
候補を一個ずつ進めるモードの実装は少しずつ進めている
--(6/7)(yusuke)
dic_ent中に品詞の名前を追加したが、wtypeの
中にいれるのも良いかもしれない
--(6/2)(yusuke)
idからdic_entを得るためのhashを作った。
--(6/1)(yusuke)
用例辞書のデザインのメモ
単語のid,読みのidを作成する(読みについては未実装)
id間の関係には複数の種類がある。たとえば、
近所に出現した、主語述語の関係で使用されるなど。
anthy-isearch.elの作成を開始
todo: seq_nodeをseq_entにマージしたので、関数名などを
見直す
--(5/10)(yusuke)
anthy.elでカナモード用のAPIを追加
--(5/2)(yusuke)
動詞の名詞化を正しく処理できていない、語幹のみで足している
直した
--(5/1)(yusuke)
セーブされた用例データは(読み、単語、品詞)の形式をとる
idからそれらを求める関数を書かないといけない
--(4/28)(yusuke)
ochaire学習の文節数を2から3に上げた
--(4/27)(yusuke)
用例の学習の数の上限を付ける、セーブする
--(4/21)(yusuke)
単語の内部表現から外部表現への変換はできそう。
逆を考えないと、、ochaire学習は付属語のパターンの
学習に縮退させようと思うです。
「背中に書く」「背中を掻く」とかむずかしいなあ
--(4/20)(yusuke)
用例辞書が候補交換に負けるのをなんとかしないと、、
--(4/17)(yusuke)
用例辞書が引けるようになった
--(4/12)(yusuke)
sdicからfile_dicへの名前変更中
お茶入れ学習の端の文節の処理をなんとかしたい
--(4/7)(yusuke)
カタカナ候補を先頭か最後にもってくるようにした
qで最後の候補を選べるようにしようと思う
--(4/5)(yusuke)
用例辞書を作るためにコードの整理
UCS4対応するためには、
辞書、内部、外部のエンコーディングを正しく扱わないと
いけない。とりあえず、内部だけUCS4ができるか検討する。
--(4/1)(yusuke)
X5rのrを忘れてた。活用形とかの情報をそのままにした名詞を追加。
--(3/19)(yusuke)
「満てるとき」>「見てるとき」というのは接続の強さの設定がまずい。
お茶入れ学習ききすぎ
--(3/4)(yusuke)
カ変、サ変は直した
ドキュメントも直さないと、、
--(3/2)(yusuke)
カ変、サ変は壊れてます。
seginfo中の情報が活用語尾を含んでいません
--(3/1)(yusuke)
K2T15 done
Cannaを読んで、活用語尾の処理を付属語グラフに回しても
よさそうな気がしたが、活用形の情報を付属語グラフに埋めるのが
面倒だとも思った。
未然(MZ)、連用(RY)、終止(SS)、連体(RT)、仮定(KT)、命令(MR)、語幹(GK)
形容詞はなんとかなったけど、compose.cに
anthy_wtype_set_ct(&ce->si->word_info[n].wt, CT_NONE);がいる
理由をあきらかにすること。
活用語尾を付属語送りにしたせいで、struct_ratioがめいっぱい下がった
「動きやすい」とかにするとcoreの品詞が動詞で、活用形が終止形になってしまう。
--(2/27)(yusuke)
Cannaの付属語グラフは
main.code 品詞の名前の定義のみ
gram.code 付属語のクラスわけ
gram.goto 遷移の定義
マクロの定義が興味深い
「@〜詞語幹」というノードをそのうち作ろう
JSmonoとK2T16、K2T35をコピーしてきた とりあえず [-]演算子は無視
この取り込み作業は当分続けるつもり
数詞を数詞と認識できてない
--(2/25)(yusuke)
接続助詞の整理
--(2/20)(yusuke)
static関数のプロトタイプをいちいち先頭に書くのはやめた src-util/*.c以外
--(2/15)(yusuke)
2chの78の二つめの要望を実現すべくanthy.elの候補レイアウトを簡単化
--(2/12)(yusuke)
辞書生成の時に一度全部メモリに読むようにした。
--(1/28)(yusuke)
辞書中に同じ単語は一ヶ所しか現れないことを保証するようにした。
--(1/25)(yusuke)
anthy_ddic_push_back_dic_ent()に単語のidを付加した
--(1/20)(yusuke)
微妙なパラメータの調整のみ
--(12/30)(yusuke)
anthy modeでの候補選択をclean up中
(参照: anthyスレ78番)
#OKX (動詞丁寧表現語幹)を #T30: 名詞(する,語幹,格助接続)
と同じにした。
--(12/8)(yusuke)
姓と名をマージするのが変 src-splitter/metaword.c::try_combine_name()
--(11/29)(yusuke)
Doxygenを導入した。anthy/ でdoxygenを実行するよろし
--(11/23)(yusuke)
候補の構造でスコアをいじるところで分母と分子をまちがえてたので直した
--(11/18)(yusuke)
括弧の開きを後ろの文節に付けたい
--(11/16)(yusuke)
文節の最後の文字が助詞ならば,そこまでをカタカナにした候補を
生成するようにした.次は評価をいじる
「書いて」が出ない.付属語の長さでstruct_rationを引き過ぎ(直した)
--(11/9)(yusuke)
ヤマケンさんから頂いたメモリリーク修正のパッチを当てた
2chで頂いたローマ字にバックスペースでアルファベットに分割する
パッチをあてたが,メモリリークがあるっぽい.(直した)
--(11/7)(yusuke)
anthy.el のバッファごとのコンテキスト分離をやった
minibufferが絡むと依然バグる
--(11/6)(yusuke)
2chで指摘された問題の一部に対応
あとはanthyinputのclean upが必要
input.hの構造体を見せないようにするためのAPIを足した
--(11/2)(yusuke)
主語(subj)
述語(pred)
修飾語(mod)
独立語(dep)
接続語(conn)
--(10/23)(yusuke)
> #KJ >
などのエントリを追加しているところ
「かお」で顔文字も欲しい
--(10/22)(yusuke)
文の成分は主語,述語,修飾語,独立語,接続語というモデルで
行こうかしら
SKKの辞書を取り込めるようにしたい
--(10/3)(yusuke)
自立語のみの学習を追加した.TODO(Done 10/22)
*文節ごとの学習とのコードとの統合をする
*動作チェック
--(9/28)(yusuke)
スコアがオーバーフローしてた
intで256を掛けることがあるので,よくチェックすべし.
--(9/21)(yusuke)
candswapで候補を入れ換えるのは変で
旧候補は2位に落とすだけで十分直した
--(9/19)(yusuke)
〜する,〜おく,〜べき
--(9/14)(yusuke)
seg_infoのstruct_ratioとbase_scoreをそのうち統合したい
--(9/8)(yusuke)
文節の長さをバランスするために,
(Σ(文節長^2))/文節数をスコアから引くようにした
負の評価値を割ると大きくなるという恥ずかしいバグ
--(8/22)(yusuke)
右に隣接するextentの様子でそのextentも変わるようにしようと思った
cannadicから消えてた #D2KYを復活させて 「動き易い」などの変換を復活
--(8/4)(yusuke)
右から検索に変わる方法が難しい
--(7/28)(yusuke)
「生み出す華麗な」が「生み出すか礼な」で後ろから
マッチングすればよいでしょうけど件の特許が邪魔.
でけた.検索時に文の右端か2つめ以降のextentは加点することにした.
しかし,右端に句読点などがあると困る.
--(7/25)(yusuke)
単語登録のバグを修正
品詞の名前に#をつけるのを忘れていた
recordを読んだときに個人辞書を更新しないといけない
--(7/15)(yusuke)
付属語グラフに属性を追加する準備開始
--(7/13)(yusuke)
charをsignedだと思ってた.はずかしいなぁ
--(7/11)(yusuke)
include/segclass.h を追加
--(6/28)(yusuke)
anthyinputのドキュメントupdateしないといけない
--(6/26)(yusuke)
splitterで文節(seginfo)に属性をあたえて,relationで
前後をみながらソートするって感じ
--(6/15)(yusuke)
「放送中し」「〜し」で生成してるけど、「放送中」は
「する名詞」ではないので減点を十分にしとかんといかん
--(6/12)(yusuke)
名詞に接頭辞をつけないようにした。
次は(a)接頭辞だけで文節になるようにする、
(b)接頭辞を含むmetawordを作る
「いれたて」が変換できないregression
--(6/11)(yusuke)
よくわからん文節は、全部カタカナの候補を
先頭に出すようにした。次にはこれを学習できるようにするかも
--(6/8)(yusuke)
無理矢理くさい候補は減点して、カタカナのみの名詞にしよう
--(6/4)(yusuke)
metawordの生成されていない一文字extentを生成するようにして
ダミーのmetawordをそこでは使わないようにした.
--(6/3)(yusuke)
extentが片付いたら,接頭辞,接尾辞を整理しようと思う
--(6/1)(yusuke)
付属語グラフの強化をやった
--(5/30)(yusuke)
extentへの移行はとりあえずできたかな
NF_NAME = NF_FAMNAME | NF_FSTNAMEはまずい
名前っぽいシーケンスを二つ結合してしまう
--(5/28)(yusuke)
一文字の文節のスコアを下げた
後ろの文節のスコアをあげようと思った
右から検索するというのは例の特許がかかってるので
やめようと思う.
「いまの^にnほんが」を「いまのに」で文節を構成して
しまうという問題がある
--(5/25)(yusuke)
extentへの変更を実行中
--(5/23)(yusuke)
splitterにmetawordよりも上のレイヤのextentを
導入することを決意.失敗したらまた全部除去する.
--(5/22)(yusuke)
MAP_CLEARを2回するとcoreはく
直した
--(5/21)(yusuke)
カナ入力のためにLHSが複数文字のときに
設定できるようにしつつある.
--(5/19)(yusuke)2周年!
カナ入力をしようとすると最初のローマ字の設定を
クリアしないといけないのが面倒.
--(5/18)(yusuke)
rkconvの設定を改善する
付属語グラフの改善
接頭辞、接尾辞の学習
ILIBのドキュメントの改善
rkconv.c::rk_sort_rule()を始めた
--(5/16)(yusuke)
anthy_input_edit_config() を
anthy_input_edit_rk_symbol_config()
anthy_input_edit_rk_edit_config()
に分割した
--(5/15)(yusuke)
src-splitter/wordborder.h のword_info_cache中の
meta_word,word_listをポインタの配列にした.
--(5/12)(yusuke)
anthy_input_free_config()でconfigをリファレンスカウント方式にする?
--(5/11)(yusuke)
static void *ここに改行をいれて回る日々*hoge()
テストプログラムが誤変換を学習するので困るが,
直すのは手間っぽい.
テスト用の匿名パーソナリティを作らんとダメっぽいです.
匿名パーソナリティを""にして,デフォルトを"default"に
することを検討中
--(5/9)(yusuke)
lock_record()でロックしてたのでまずい
はやくflockに切替えるべし.きりかえた
ochaireのnegativeがおかしい
--(4/30)(yusuke)
testのプログラムをelispに変更しつつある
無理っぽいseginfoだけで候補を生成してしまった場合にはもっと短くて
適切なseginfoも探すようにすべし.
--(4/28)(yusuke)
anthy-agentをテスト環境でも動作できるようにコマンドラインオプションを
いくつか追加した.
「ー」を変換してスペース4回目に列挙モードになるのは変
--(4/21)(yusuke)
src-splitter/evalborder.c の検索で右端に到達したら
より深い検索に切替えるようにした
--(4/20)(yusuke)
anthy_get_ext_seq_ent_wtypeがいい加減過ぎ
自立語部の長さを取り出すとき,動詞は語幹だけで数えるか
「名詞する」の「する」まで数えるかどちらかにすべき.
--(4/14)(yusuke)
agent.cにコメントを追加
--(4/7)(yusuke)
未知付属語学習の追加中
--(3/29)(yusuke)
src-splitter/metaword.c::make_dummy_metawordのスコアの計算が適当
--(3/27)(yusuke)
#OKXの候補が出ない
anthy_commit_border()にseginfoが渡って来ない
--(3/24)(yusuke)
wtypecmpの返り値が変
--(3/21)(yusuke)
wl->conn_score, si->tail_biasを分母256の固定小数に変えた
si->tail_bias を si->tail_ratioに改名した
--(3/4)(yusuke)
「私達」を学習しない
お茶入れの評価を越える点数になっている?
--(2/26)(yusuke)
fprintf -> anthy_log に切替え中なので、メッセージ中の
"Anthy: "はもう要らない。不要なinclude <stdio.h>も消す
--(2/25)(yusuke)
「へんこうもと」の候補に「変更も」がでてくる
->昔ばぐったのを学習させたからでした
--(2/17)(yusuke)
付属語グラフによるバイアス(done)と
接頭辞接尾辞のバイアスを復活させる
必要がある。
--(2/16)(yusuke)
seg_infoをmetawordのレイヤに移動した
エラーなどをエラー出力にはくのはまずいので、出力するための機能が必要
src-main/personality.cを消した
--(2/15)(yusuke)
ネームスペースの汚染を避ける必要があるので徐々に改善していく予定
--(2/10)(yusuke)
今ごろallocatorにバグがあったにょ
--(2/7)(yusuke)
src-diclib/dic_personality.h を消す
--(2/5)(yusuke)
「ー」は名詞の付属語!
--(1/30)(yusuke)
*segexpand.hを消す
--(1/26)(yusuke)
commitの際にseg_infoを構成するのをやめないといけない
contextのreset時にseg_info_atorを作りなおす
無変換の候補にseg_infoがない
--(1/25)(yusuke)
*seg_info中の単語の情報を配列にする
*presonalityの除去はできた
--(1/24)(yusuke)
今日からDIARYには名前を書く
*ソースツリーの外でビルドするとbase.tとextra.tがくみこまれない。
*seg_infoに複雑な情報を持たせる -in progress
*personalityの除去 -in progress
*付属語の情報の更新(foosen)
*バージョンを返すAPI -planning
--(1/20)
「しょうがない」の候補に「しょうがい」がでる
--(1/15)
*src-diclib/record.c でfseekに失敗したらというところが
あるがfseekは失敗しない(fixed 1/18)
*候補の交換が作動していないっぽい。ループのところを要チェック(fixed 1/18)
--(1/14)
辞書ライブラリでsdicから同じ品詞を付けた単語を取り出す時に
先に取り出された物には頻度を高くするようにして、
辞書中に先に出現した単語に若干高いスコアを与えるようにした
(いままででもqsortの実装によってその順序になっていた)
cannadic-0.93aへの更新
--(1/12)
cannadic-0.93への対応と辞書ディレクトリの移動
--(1/2)
xemacs対応?
--(1/1)
候補の評価のチューニング
--(12/27)
βフリーズ(これはその後に書かれた)
--(12/21)
mule対応のelispを統合
--(12/18)
ドキュメントの整理
--(12/17)
単語登録はできたが、登録した際にはキャッシュ中の
既存のエントリーをパージする必要がある
--(12/11)
メモリリークはほぼ解決、でも変換一回ごとに1K弱ほど
候補生成でリークしてる
--(12/10)
形容動詞の処理が怪しい
一日中メモリリークとの格闘
辞書ライブラリっぽい
--(12/9)
メモリリークの追跡
pageはリークしてないようだ
--(12/8)
「下さい」がでない
ど -> ° をなんとかする
--(12/1)
個人辞書に活用するエントリが入ってると厄介
--(11/30)
〜子(生成子)
両〜、〜こと、だろう、まで
--(11/29)
ソース中のドキュメント追加
--(11/26)
splitterでグローバル変数を一個消した
--(11/23)
record.cからsaveするときに'"'をescapeし忘れている
数字を全角/半角に変換できるようにした
--(11/18)
XCT_PARTのバグ取り、単漢字の修正
--(11/16)
長音、母音の小さいもの、促音 metaword生成時に含むようにした
濁点、そのたの小さいもの XCT_PARTをつくった
metaword生成を整理した
「あaaaaaaaaaaaaaaaaaaaaaaaaaあ」とか変換すると遅くなる
->get_seq_entが遅いand 呼び過ぎ
ext_entのソースコードを整理した
--(11/13)
「゛」などの処理を記述中
「゛」はその前までで候補生成するのはまずいが「ぁ」はOK
「痛ぁ」など。splitterとsegcompose両方で対応すべし。
--(11/7)
リリースワーク、リリースノートを書いたり
--(11/6)
ドキュメントの追加
--(11/2)
αリリースまでのクリティカルバグは
*ダブルクォートの処理
*候補選択画面
--(10/31)
'(' ')'のanthy-agentの対応がまずいような気がする。
--(10/29)
得(う、え)る「うらない」とかでてきてしまう。
「行きたい」が変換できない(直した)
--(10/26)
カ変動詞の処理をとりあえず実装した。
--(10/24)
elispでモードラインへの表示を追加した。
*カ変の対応と同時に外来語の「ー」の対応をやろう
--(10/23)
config.h
--(10/22)
全角の数字も数字になるようにした
--(10/21)
xchar APIを整理した
--(10/20)
anthy-confを etc に格納するようにした
--(10/18)
printf() -> fprintf(stderr,)
--(10/17)
開きかっこはMS-IMEにならって一つの文節にしようと思う
に"ゃあとのSync待ち
--(10/16)
*takによるMakefile.amの修正
*に"ゃあによるお茶いれパッチ
*kaoru君さんによるelispの修正
*agent.cの修正
など
--(10/14)
開きかっこがmetawordの左にあったら、それを含むmetawordを作るようにした
elispでanthy-minor-modeをbuffer localにした
--(10/13)
〜してる
帰る
--(10/12)
始めてのanthyの使用がanthy-agentの起動だった場合辞書ファイルを作成する
とかいった内容が標準出力にでてくるので対策をとらんといかん。
カーソルの色で状態がわかるようにしたい
「死ぬ」が変換できん?
文末のnをなんとかしたい
/ でバックスペースをおせない
--(10/11)
alignment of sections in dictionaly file.
--(10/10)
anthy.elにminibufferの対応を書いた
--(10/8)
emacs lispのコーディングを継続中です、変な入力にも対応できると思う。
--(10/6)
anthy-agentが使い物になってきた
--(10/5)
elispで[う゛]を変換すると点と分かれてしまうのがまずい
--(10/3)
変換前の候補をanthy_get_segmentで取り出せるようにした
ドキュメントやコミットの部分の整合性をとらんといかん。
emacs lispをすこし書いた
--(10/2)
agentのマージ第1弾、ここからemacs lispを書こう
--(10/1)
文節の伸縮の学習ができたっぽい。
もうすこし細い点を見直すべし
--(9/30)
splitterから文節の情報を取り出す際に自立語の
品詞の名前を取り出せるようにしつつある。
--(9/28)
splitter cacheを必ず作るようにした。
cacheじゃなくなったので名前を変えよう。
--(9/23)
文節を拡大するときに、文節が短かかった時の候補もでるようにしたいけど
文節の拡大が学習されて次回に長い文節が最初に出てきたときに
その候補が出せない。
学習機構は可逆にしよう。
--(9/22)
anthy_quit()を実装するためにメモリ確保をallocatorに移動中
終了時にメモリを解放するためには、allocatorモジュールが
用意するdestructorで一気に解放するのだが。
参照する先の情報が先に解放されてしまってからunref_Xとかやると
まずそう。
*メモリ以外の解放はdtorには書かない
*dtorの引数にメモリのみの解放であることを示す
*参照される側のデータのモジュールで不当な解放をハネる
*データを参照するモジュールのメモリは先に明示的に解放する(9/23)
--(9/19)
最初の分割時に出した隣接する文節が結合されてコミットされたら
それを学習すれば良いような気がした。
--(9/14)
副詞の分類を開始した mkanthydic/av.depword を追加
anthy.elのコーディングを進行中
ひらがな数字は A := (X千)?(X百)?(X十)?X? までにするか
B:= (A億)?(A万)?A? までかだけど、とりあえずAだけやってみよう。
--(9/12)
「書い易い」とか出てきてしまう。
ctab.h に CST_V_RENYOU_{TA,DA} を付けてなかった場所を直した
動詞連用形 -> 動詞連用形{5,D} に制約を強くした
「嗅い易い」ってなんだ?
--(9/11)
〜まくる、〜しまう は Cannadicでは対応されていない。
mkanthydic/extra.t の助詞、助動詞は消した
src-splitter/evalborder.c に境界の検索は移した
「動き易い」などが候補として出てくるようにした
--(9/9)
辞書のインデックスにEUCの2バイト文字とASCII文字を混在する
ようにしよう。辞書ライブラリ側での対応は終了
--(9/8)
「いれる」に「要れる」が出てくるのは変
辞書ファイルのindex中にでてくる文字の巻き戻しの数を
ASCII文字ではなく キャラクタコードの1-31を使うことにした。
か変、さ変が正しく処理できていない。
「する」は直した
候補の評価はどうしよう?
--(9/6)
候補生成を2系統にするのはできた
--(9/5)
ドキュメントを追加した
--(9/4)
metawordの生成数が多すぎるような気がする。
splitterからの情報の取得をword_listからではなく、
metawordからやるようにした。
--(9/3)
metawordでカバーされていない領域を埋める方法を検討中(とりあえず実装)
検索の際には同じところをカバーするmetawordでscoreの低い方は無視
することができるような気がする。(done 9/4)
--(9/2)
#OKX の 「御存知」に「御存知ない」と付くのはどういうパターンで
処理しよう。他の#OKXにはない。
--(9/1)
segcomposeから接続のスコアもsplitterから取ってくるようにした。
そのうちsplitter/metaword.c::make_unkseq_metaword()をもうすこし
賢くしたい。
動詞連用形 + 名詞化接尾語を処理できるようにした
「入れたてのお茶」は入力できる。
#OKXの対応がまだ
*候補交換のループ対策にバグがあるっぽい
*「する」の処理ができてない。
--(8/31)
dic_sessionの数を増やすのはちょっと面倒そうなので
遅延生成で逃げることにした。anthy_set_strでセッションを作り
anthy_{reset or release}_contextでセッションを解放するので
32個までの並列入力には耐えれる。
形容詞化接尾辞 形容動詞化接尾語 名詞化接尾語の対処ができるような気がする
record.cのsectionを解放する部分のコードをミスってたので直した
これで辞書管理ツールが動く
--(8/29)
辞書管理ツールを書きすすめた、SEGVが発生するので
もうすこし、デバッグが必要。
--(8/28)
ディスク破損により2日分の作業が飛んだ。
辞書をBigEndianにそろえた
record.cに にゃあの修正をとりこんだ
--(8/23)
可能動詞の命令形を適当にやってしまっている。
自立語の品詞を見てから付属語を付けるべきで、
その前に付属語を付けてしまってる。
--(8/22)
辞書のエントリをシェアードライブラリから外に出した
mkanthydicで辞書ファイルの各部を作って別のコマンドか
何かでリンクしようと検討中。
辞書ファイルのシェアードライブラリをやめた
--(8/20)
可能動詞は普通の動詞と助動詞の接続が違うっぽい
「書け(「書く」の可能動詞形の未然形)させる」とは言わない
src-diclib/ctab.h wtab.h を作った
--(8/19)
rpmのspecファイルを書いた
自立語部の長い文節はスコアが高いようにしよう
「する」がきちんと出てこない
splitterからの構成の取り出しはとりあえずできた
struct.txtから簡単なものをとりのぞこう
--(8/18)
wordsplitterに接続によるスコアをつけた。
splitterからの情報による候補の生成を実装したが
若干バグがあるっぽいので、直したらstruct.txtの
中から簡単な物は消す。
--(8/17)
agentコマンドを書き進めた
--(8/16)
リークは候補の割り当て以前のところで発生しているようだ。
A*サーチのところでA*のノードを解放し忘れていた。
依然としてリークが発生しているみたいだ。
--(8/15)
メモリアロケータを効率化した
確保されたメモリが300KB弱まで下がった。
メモリリークしているみたいだ、要調査
--(8/14)
に"ゃあのtrieのデバッグを取り込んだ
splitterの作った情報を使って文節の構成を取り出せるように
しつつある。コミット時にもその情報を使えるようにしたいと
思う。
--(8/13)
名詞の細分化が終了した
テスト入力を全部入れた時には400KBほどアロケートしていた
--(8/12)
名詞の分類をcannadicに存在するものではなく、
辞書管理ツールの中に分類が存在するものの方にそろえた。
--(8/10)
郵便番号辞書を使いたいと思った
--(8/9)
辞書制御コマンドを作成中
--(8/8)
emacsからAnthyを使うためにはIIIMPじゃなくて
サブプロセスを起動してそこに対してパイプでコマンドを
送受信する方式を使うことにしようと思う。
(start-process)を見れ
--(8/6)
current task
*trieの修正(done 8/14)
*閉括弧の自立語化
*辞書ファイルの非シェアードライブラリ化(done 8/22)
*連体形のあとに来る文節のmetaword化
*単語登録の品詞の扱い(done 8/31)
*allocatorをshrinkするタイミングの決定
ruleparser中の\include を \\include に変更した
ruleparserの整理(続)
segdef中の構造体にallocatorを使うようにした。
--(8/2)
ruleparser.c を整理した
書きこみを行わない匿名のpersonalityを作ろうと考えてる。
副詞0 から 副詞14を追加した。
それぞれに対して語幹だけという名前を作らんといかん
--(8/1)
名詞のあとに「せる」「させる」のどっちが来るんだろう?
--(7/30)
昨日のエンバグをフィックスした
括弧の閉じは名詞で独立語とすると良いという意見をに"ゃあから
もらった。is_close()を追加。
--(7/29)
*名詞の使ってないタイプ(SCOS_T*の一部)の削除
*wordseqに接続のスコアの導入
--(7/28)
名詞の辞書の強化など
--(7/21)
名詞1 から 名詞39までを作成
--(7/19)
cannadicの名詞の分類に対応を開始。てはじめにT35に対応する
名詞35 SCOS_T35を作成した。
--(7/18)
splitterでグローバル変数に現在処理中のデータを必ずセットするのを
忘れていて落ちるバグを直した。
辞書のインデックス中に'\' '"'を許すようにした。
小文字アルファベットはだめっす。
metawordとword_listをallocatorを使うようにした。
--(7/11)
personalityの名前が '/' を含むとまずいので、その場合は ""を
使うようにした。record(個人データ)のファイル名を
~/.anthy/last-record:{name of personality} から
~/.anthy/last-record_{name of personality} にした。
: はパスの区切とかストリームの識別とかに使われるから。
candswap(候補の交換)のエントリのagingを追加した。
--(7/10)
allocatorのキャッシュをsizeごとに共有するようにした。
ディレクトリsrc-utilを作成した。
--(7/9)
文節末の構造を若干追加
一部の接尾辞は接続グラフに埋めておける。
--(6/27)
ソースのセミコロン、カンマなどの後に空白を開けるようにし変更中
に"ゃあによるtrieを利用したrecordをとりこんだ。
--(6/15)
ddicのノードもアロケータを使うようにした。
連用形の名詞化で連用形以外も名詞になってしまってる?
->5段の連用形には2パターンあって、名詞化しないほうも名詞化してた。
「とる」が変換できない
--(6/10)
RExだけallocatorを使うようにした。
splitterでパラメータを使うようにしはじめた。
--(6/9)
副詞は活用しないので、副詞語幹にCT_HEADを付けるのは間違いだった。
--(6/7)
「だらけ」を名詞の後につくようにした。
allocatorを書いた、destructor付きの構造体アロケータにした。
Linuxのslab allocatorみたいな感じだす。
--(6/6)
可能動詞のルールがよくわからん、5段以外のでも可能動詞になりそうな
気がする。
「もっとも」が変換できん。(できる 6/16)
「こぴー」を変換するとルール番号が変。
(「ー」を平仮名に入れて解決 6/27 ルール番号はどうしましょう?)
副詞が辞書から取り出せない。
dictiona[l]y というスペルミスをしていた、はずかしいなぁ、もお。
--(6/4)
LISPを使って意味解析の部分を記述するというideaはどうだろうか?
もし、意味解析のために沢山のモジュールが必要ならその方が楽だろう。
CT_MEISIはやっぱり除去する。名詞化の有無は品詞のところに書いてある。
連用形が名詞になる動詞を実装した。
次は可能動詞だす。
recordにpersistentでないデータを格納する方法と検索を高速化する方法を
追加した。
--(6/3)
splitterの初期化のコードをsplitterに移動した。
struct.txt中のマクロが後方参照できないのがいたい。
可能動詞が面倒。
CT_MEISIは追加したが、その後をまだやってない。
--(6/2)
ソースコードの整理をした。
src-main/
src-splitter/
src-diclib/
にわけた。
--(5/30)
*必要なallocatorの種類を列挙し、実装する。
*動詞の名詞形を活用表に追加する。
-動詞には足した。
*wordsplitterのソースを分離して、遺伝的アルゴリズムの枠組を作る。
*ruleparserに '\' の改行エスケープを追加する。(done)
--(5/29)
動詞の連用形は動詞の名詞的な使いかたをされることがあるが、
そのままルール化するのはどうだろうか?CT_NOUNを作ることにする。
--(5/27)
そのうち文節分割のチューニングのためにlibanthysplitter.soとか作って
そこに関係するファイルをかためようと思う。
しばらくは変換効率には取り組まずに関連のユーティリティにいそしもう。
個人辞書のデータ構造はmapだと思ってたが、実はマルチマップだった。やべぇ。
メモリallocatorの設計をどうしよう?次のようなのが考えられる。
*固定サイズで回収可能なやつ seq_entなど。
*可変サイズで最後に回収するやつ RExやNewStateなど。
*可変サイズで回収可能なやつ、 malloc/freeよりも効率が悪い。
--(5/26)
シェアードライブラリとして作られる辞書はアーキテクチャ依存なので、
mkanthydic/Makefile.amをいじって、anthy.dic.so を share/anthy/では
なくて lib/anthy/にインストールするようにした。
--(5/25)
dic_utilの関数を書きはじめた。
--(5/24)
にゃあ"の書いてくれたsegdefのオートマトンの変形ルーチンをマージした。
これから理解していこう。
recordの部分には大量の蟲さんたちがいた。
個人辞書はおおかたできたが、設定ファイルには #XYZ の方の品詞しか書けん。
--(5/23)
「さっさと #F12」
「とっとと」は無い
辞書のマルチユーザ化はできたっぽい。あとは設定ファイルのみだす。
単語切りの点数のデノミが必要な気がする。
--(5/22)
「いいます」->「行います」とか出てきた。(5/23)活用表を直した
「せっせ #F14」が変
--(5/21)
libanthydic/dic_util.cを進行中
--(5/20)
辞書のパーソナリティの実装がそろそろなので、切り替える前に
一度リリースしたい。
--(5/19)
今日はAnthy一周年!
辞書のパーソナリティの実現はかなり面倒。
文法定義ファイル中のリテラルのseq_entと
各ユーザのseq_entを同一にすることはできないことに気がついた。
比較関数を作ろう。
userAのseq_ent -> globalなseq_ent <- useBのseq_ent
という参照関係があるとuserAのseq_entとglobalなseq_entは等しい。
ポインタのからseq_ent_cmp()への書換えをする。
個人辞書メンテナンスプログラム用のヘッダファイルdicutil.hを追加。
--(5/12)
dic_sessionへのパーソナリティの実装中
--(5/5)
wordsplitで自立語一つをword_listとして登録するところで
変数の初期化忘れをしていた。
dic_sessionが複数のpersonalityに対応しとらん。
personalityの実装とかutenaの完成度の向上とかもやりたいけど
やっぱ変換効率の向上を図りたい。
libanthydic/のヘッダを若干整理。
--(5/4)
「ら抜きことば」を追加。
「このほんを」が一文節になってしまう。
--(5/2)
辞書へのpersonalityの追加は面倒だ、文法定義ファイル中
の文字列に対するseq_entは誰の辞書に入れるとよい?
--(5/1)
wordsplitに若干のコメント追加など。
数字でもないのに数接尾辞がつく。
--(4/30)
personalityの実装中
recordはpersonality対応完了。
--(4/29)
変換結果の候補の構造体cand_entに何番のルールで構成されたかを
記録するフィールドを追加した。
動詞の「する」がでてこない。dic_cache.c::fill_sv_conjugated_entを
追加中。
wtypecmpよりも厳密な比較をするやつが必要っぽい 数詞 = 名詞 では困る。
wtypecmp -> wtypematch に変更して(done)
wtypecmp が包含関係をチェックするようにする。(done)
wtypecmp はいらんのでは?けした(done)
personalityの実装進行中。
recordにpersonalityを実装中、初期化が変。
--(4/28)
src/personality.cを追加
libanthydic/alloc.cを追加
--(4/27)
途中でパーソナリティを切り替えれるようにしたい、
一度にfreeできるアロケータを書いて、コンテキストごとに
用意することにする。
include/alloc.hを作った APIは考慮中。
personalityを追加するのに、recordとdic_cacheが要作業
contextはなんとかなる。
personalityはいつでも変更できるようにする。
コンテキストはカレントpersonalityに対して作られる。
--(4/20)
uid一つに対して1ユーザというのは柔軟性に欠くので
anthy_set_personality()を追加した。
--(4/17)
文節ルールに番号をつけた。デバッグしやすくなるかも。
struct word_entとstruct cand_elmが似ている。ここにもう一つ
追加するとわけわからん。候補のなかのどれが同じルールで作られたか
のリンクを作ろうと考えている。
--(4/15)
北斗の拳辞書を追加した。
アラビア数字の品詞の問題は直した
「35号」「三十五号」の両方の候補がでるようになった。
次は優先順位をなんとかしよう。
--(4/14)
セキュリティに関するドキュメントを追加した。
--(4/13)
base.dic.txtに助動詞を一通り追加した。
次はstructだ。
libcとかがあるので単純に議論できないけれど、
プログラムサイズはmobile Wnn V2より若干小さいらしい。
--(4/12)
base.dic.txtに未然、連用、終止、連体接続の助動詞を追加
--(4/11)
助動詞をbase.dic.txtに若干追加、要作業。
--(4/10)
ST_なんとかを整理してコメントを書いた。
--(4/9)
アラビア数字などが絡むときの品詞の扱いとかが変。
--(4/6)
名詞の付属語はオプショナルなものと考えられるが、
いくつかの活用の動詞に付属語は必須なものであるということを
活かした評価関数を付けよう。
Wnn,Cannaを使ってみたところ、未知の文節末のシーケンスに
強いような気がした。
--(4/4)
文末の問題は直したにょ。
数字の問題も直したにょ。
--(4/3)
metawordのスコアを文字数じゃなくて文節数で割るのに戻した。
賢さが復活した。かなりロバストな感じ。
文末の処理の弱さを完全に解決するという当初の目的は果たしてないが
* A*を用いたことによる計算量の減少、上限の保証
* metawordによる構造の処理
+ 文節学習の利用
が実現できるのでまぁよろしい。
*アラビア数字の処理がバギー
*文末の文節分割がバギー
なのを直すと次のstableになるかにょ。
--(4/2)
metaseg -> metawordへ変更。
--(4/1)
チューニング中
metasegはmetawordの方が良いかも。
--(3/31)
ドキュメントの整理中。
パラメータの調整についてはもうすこし考える。
なぜか「せっかくだから、、」だけは正しく変換できてる…
--(3/30)
A*のヒープはきちんと処理できているようだ。
切り替えを行う!
かなりヘキョくなったがそんなに悪くもない。
--(3/29)
アラビア数字からの変換は1億未満の正整数に限ることにする。
record中のPRIVDICの形式
読み 単語 品詞 頻度
ddicのカスケード接続を実装すべし。
metasegのsplitterは動き出したが、動作が怪しい。
ただのパラメータのチューニング不足かも。
あと、属性文法によるmeta文節のマージと、数詞の連続などの処理を設計する。
--(3/28)
A*のheapの構成のバグとりをした。
数字からの変換を書き進めた。
もうちょっと各桁の扱いに配列を使うなどする必要がある。(やった)
億までいけるようにするか?悪ノリしてもっといくか?「壱弐参…」はやるか?
--(3/27)
megasegのA*の検索コアを書いた。
--(3/26)
A*のヒープの再構成の遅延は面倒なのでやめる。(普通のコードにした)
--(3/25)
A*のheapのrebalanceのコードを書いた。
nr_単数形 -> nr_複数形 にした。
include/anthy.hはまだ、そのうちに。
--(3/22)
xchar.hに漢数字のエントリを足した
(atollというライブラリ関数があるらしい。)
--(3/21)
文節あたりの平均点ではなくて、文字あたりの平均点を用いる。
libanthydic/num_ent.c -> ext_ent.cに変更
「Linux業界に全角英数を持ち込むべからず」とか言って手抜きしよう。
--(3/20)
以前、書き忘れていたけど、COS(Class Of Speech)を細分したSCOSを導入
品詞 「人名」「人名接尾辞」を追加
meta segment splitterを実装開始、2種類のwordsplitterがしばらくは並存することになる。
未知文字列のmetasegの中に文節境界を設定された時の対処を考えるべし。
「、、|、」とか
単純なmetasegは作れた、次はA*サーチ。
--(3/19)
コードのクリーンアップsegcompose.hを除去
depwordルールのチェックの追加
--(3/16)
recordの特定のセクションのデータを全て取り出すための関数
select_frist_columnとselect_next_columnを追加した。
wordlistを複数持つ構造体(meta segmentと呼ぼうかな)
を導入してwordsplitの性能を稼ごうと思う。
これとA*サーチを同時に実装するブランチを近日中に。
--(3/14)
「〜してみると」ってやっかいですな。
文節の後部が長いと加点というのは以前失敗した
接尾辞が複数の種類で構成されると加点というのをやってみようと思う。
「〜する と(動詞 助詞)」
「〜ない とき は(形容詞 名詞 助詞)」
ひらがなのコード表 libanthydic/xchar.hに間違いがあった
(2/8)の「書こう」が変換できない件は解決
--(3/13)
文節構造のルールのレベルを実装し終えた。
--(3/11)
文節構造のルールにレベルを追加した。
単純なルールで文節の構造が決定できる時は複雑なルールを使わない。
--(3/7)
近日中にwordsplitをA*サーチをするようにする。
文節の学習の実装を開始した、
segment(struct seg_ent)にresizedという要素を追加した。
libanthydic/num_ent.cを追加した。数字関係を扱う。
--(3/5)
他の変換エンジンの「AI塔載」に対抗して「IT塔載」にしよう^^;
その実体はオプショナルな辞書をダウンロードしてくる機能。
文節関係の処理の実装を検討中
形容詞 名詞
「あついふろ」「ふろがあつい」のように順序の逆転がある
副詞 動詞
副詞によって動詞が変化するパターンはあんまり思い付かない
動詞 名詞
「嘘をつく」「鐘を撞く」「槍で突く」順序の逆転は少い
「(本日)開店のカフェ」動詞の形をしていない
--(2/28)
今日は単語の追加しかしていない。
--(2/26)
segdefの中のバグを修正
近場のTODO
*RExの回収
*record検索の高速化
*ruleparserへの '\'記号の追加
*頻度バイアスの実装
--(2/25)
wordseqの若干のクリーンアップ
--(2/24)
libanthydic/dic_main.c::get_seq_ent_from_xstr()
辞書にない文字列で意味を持つもの「123」「ABC」のような
ものを引く関数を整理した。
文節間の関係の処理の一手法として文節の隣合う文節の
master/slave関係を設定しようと思った。
「〜する」「〜するもの」「〜ため」とかを処理できそうな気がする。
隣接しないやつは難しそう
A Bが意味をなす場合に A X B も意味をなす場合が多い。
例「きれいな 花」 「きれいな あかい 花」
--(2/22)
人名の場合POS = POS_NOUN , COS = COS_JN になるのでcannadic中の
姓か名の情報が利用できない。
なんかwordsplitterのexhaustive modeにバグが残ってるっぽい。
形容詞、形容動詞の部分が甘い。
wordsplitterで参照する頻度が256を越えると256で抑えることにした
--(2/20)
名詞のflagのコーディング中。
--(2/18)
名詞だけはもうちょっときちんと分類して、
各範疇ごとの付属語のパターンを利用すべし。
文節の分割のパラメータをチューニングした。
「回答開始の合図が、、」が最後の読点の有無によって
変換結果が変化する、要調査。
--(2/17)
普通の名詞は辞書に入っている時点で接頭辞や接尾辞が
ついているが、数詞だけは接頭辞と接尾辞の両方が付く
ことができるようにする。
--(2/13)
cannadic-0.92へ更新
get_seq_ent_wtype を get_seq_ent_wtype_freqとして、
その品詞としての頻度を得るようにした。
その他のget_seq_ent_系関数もそうすべきかもしれない。
get_nr_dic_ent()とget_nth_dic_ent_str()に
変換前の文字列も引数として渡すようにした。
--(2/12)
文節の評価が負の値になってはマズいので
(割り算した時に大きくなる)
適当な数を足しておいた。
--(2/10)
じゃっかんのバグ修正
--(2/9)
時計のAPIを追加しはじめた。
LANG=ja_JPのもとではsortコマンドが予想外の動作をするので
LANGを無設定で動くようにした。
文節境界の評価を若干いじった。
main.hにいくつかのヘッダファイルを追加した。
--(2/8)
「今日中」が無い。 追加した。
文法を少し追加。
「かわれねこ」の場合、文節境界の検出のときに
未然形 + 名詞というルールを使うことができるかも。
「書こう」が変換できない。
「まさるさん」が変換できない。
(2/6)の文節の切り落しコードを有効にした。
--(2/6)
文節の後部の句読点などを切りおとすコードを書いたが、
is_??の類が正しく動作していないのでoffにしてある。
時間を計る内部のAPIを考慮中。
--(2/4)
英数字の列を名詞として扱うようにした。
--(2/3)
昨日のバグ修正として、文節定義の構文解析をシンプルにした。
?演算子(POSCLOS Positive Closure)を作った。
--(2/2)
?演算子(NEGCLOS Negative Closure)を作っているが、うまくうごかない。
文節構造の解析の部分をに"ゃあに説明したので、簡約の部分をやってくれる
かもしれない。
--(1/30)
接頭辞 + 名詞 + 接尾辞のパターンを消した。
たいがいの名詞は、辞書に入っている時点で
接頭辞、接尾辞が付いている。
segstruct.c の
文節の構造の定義の解析
オートマトンの作成
オートマトンによるマッチング
のうちマッチングをsegstruct.c 残りをsegdef.cに
分離した。
segstruct.hはオートマトン関係のもののみにした。
--(1/29)
L5活用は(いらっしゃる ござる) は 「い」で命令形になる他に
連用形にもなる。
そろそろ形容詞も扱う?
形容動詞語幹 、形容詞語幹+"み"
--(1/28)
segstructのtraverse_statがマッチングの途中で
リターンしていた。
これで、正規表現関係のバグはほとんど無くなった?
次は ? 演算子をやろう。
--(1/27)
ここ数日追いかけていたバグの一部は構文木の表示関数の
バグだった。(#*><)
構文解析はできたけども、状態グラフが正しく動作していない
ような気がする。
--(1/26)
か変の活用を書いた。若干間違えているような気がする。
正規表現パーザがおかしい。
--(1/25)
ST_NUMを除去した。数は品詞として扱うことにする。
バグの原因発見
A | B -> or(A,B) の書きかえの際にこのリストを指す
ポインタは以前として Aのノードを指している。
カ変動詞の仮定形と未然形を書いた。
--(1/21)
12/31に書いた、wordsplitterの検索の部分を書いたが
うまく動かない。バグなのかパラメータの間違いなのか
わからんのでしばらく放置。
IIIMPサーバUTENAのコードを取りこんだ。
segstructのマクロの展開にバグがあるっぽい
--(1/20)
頻度が0のものの頻度は1にして、
そうでないものは8倍するようにした。
--(1/17)
segstructのところに、 '|' 演算子を実装し終わった。
次は'*'かな。
ε遷移は一回までにした、これで無限ループにはならない。
--(1/15)
open_fileなどの仕様が変なので適当な機会にクリーンアップするつもり。
open_in_.. とか
--(1/13)
変な候補を出しすぎ。
--(1/10)
ε遷移の解決、ε遷移が2回以上連続する場合には一回で到達する
ε遷移を追加する。マッチング時にはε遷移は2回以上連続でやらない
ようにする。
同音異義語の問題 「高井」「高い」のような品詞の違うやつと
「貴社」「記者」のようなやつがある前者のほうは
割と簡単に解決できるのでは?
ST_なんとかをもっとシンプル化すべきかな?
詳しい場合分けは候補の生成時にやるとして、
「2001年」は変換できても「199X年」は変換できない。
「このほん」が一つの文節になる。
--(1/8)
か変の「来る」がやっかい。
ルール定義ファイルに \eof と書くとそこで読み込みを打ち切るようにした
デバッグ用なり。
「りくぐん」 「陸軍」 < 「陸群」はおかしい。
やっぱり、「名詞」で候補を生成したら 「名詞 + 接尾辞」で
候補を出さないようにすべきである。
文節構造の定義のシンタクスエラーのハンドリングを書いた。
--(1/7)
昨日のε遷移の問題は解決。
--(1/6)
正規表現のマッチングをするときに、入力が尽きても
ε遷移なら遷移ができる。
「つかって」が変換できなかった。
--(1/3)
文節構造を定義するところにオプションをつけて
大きなお世話様を変換できるようにした。
セッションの保存の作業を進めた。
--(1/2)
変換候補の交換は一回しかやらないので
A->B B->C という関係があっても A->Cにならないのを修正
12/17の議論で「freeなんとか」はメモリ領域の解放を意味し
「releaseなんとか」はその構造の解放を意味するということで
どうでしょうか?
「ーだけ」 「ーしか」 が cannadicに無いように見えるのですが
変換はうまくいけるようです。
ダブルクウォートを文字として扱うときは '"' でいいんですよね。
--(1/1)
「おおきな」は連体詞
文節構造定義ファイルには
".." リテラル、品詞、 #op オプションの3要素を書けるようにしているところ。
リテラルと品詞の両方があれば、リテラルの方がマッチする条件に使われる。
オプションは#で始まり、単語のバイアスなどを決める。
--(12/31)
文節構造の定義に '(' ')' を使いだすと落ちるようなので(直した)
バグとり中 ε遷移のループ問題を無視していたのを思いだした
wordsplitterの検索の最後の一段は検索をあらかじめ行っておくことが
できるっぽい。たとえば
「わ わた わたし わたしの」 の中でベストなスコアを 「わ」のところに
記録しておく、文節境界の制約があるので最初の変換時でなくて
wordsplit開始時に情報をセットする。
*プログレッシヴな変換をサポートする準備をしたい。
update_contextというようなAPIを追加するかな
--(12/30)
*おれの名前が変換できん。
候補の交換による学習ができた、あとは保存する機能だす。
文節構造の定義の文法を拡張する。
リテラルや品詞を書いたあとにオプションを追加することができるようにしたい
たとえば
動詞未然形 "ない".形容詞
みたいな感じ
*未益田 :69 > みました:1
--(12/29)
文節境界の検出に接頭辞の処理をつけたけど、
すると候補の評価のところがおかしくて
おビール < 尾ビール とかいう謎なことになった。
*「あさんかびーる(亜酸化ビール)」を変換すると落ちた。
->直した、配列の範囲外への書き込みをやっていた。
接尾辞も追加した。
--(12/28)
辞書セッションのanonymousセッションを追加した。
anonymousセッションの元で確保された辞書エントリは解放されない。
文節構造定義ファイル中のリテラルなどのseq_entを取るときに使う。
文節境界検出で読み切りモードで時間がかかりすぎるので
適切な枝刈りをすべき。
*文節候補の中に同じものがある場合はスコアが低い方を除去したら
通常5秒のところが4秒になった。
*展開するノード数に制限をつけたところ、上手くいっているようだった。
理想的にはA*の類いを使うべきかも。
接頭辞は一個までになってるけど、さしあたって放置。
--(12/25)
ST_NONE 0 は単語にならない文字列に相当 seq_ent = null
ST_WORD 1 は全てのseq_entにある
ST_UNKSEQ 2 は名詞などになりそうな文字列
ST_SEP 4 句読点など
ST_NUM 8 数字の列
get_seq_ent_wtype中から呼ばれるget_extra_seq_ent_wtypeを
書かんといかんにゃあ
数字を名詞として扱うことができた
--(12/24)
test_anthyを若干改良、テスト入力を外部のファイルにした。
文節構造の定義(struct.txt)中のリテラルを読むとき、
辞書のセッションが無いので忘れられるというバグがある。
--(12/22)
testディレクトリを作成してテストプログラムを移動した。
付属語グラフに若干追加
--(12/21)
Ancy->Anthy の書換え完了!
文節解析でルールに文字列リテラルを書くことができるように
なっているが、このリテラルにマッチすると品詞がwt_noneになってしまう。
「"ない".形容詞」というようなリテラルを書けるようにしようかな?
付属語グラフに若干追加
--(12/20)
付属語ファイルの名前を変えた
*.depword.txt -> depword.*
anthyへの改名開始ファイル名などはほぼ完了、
これからソースやドキュメント中の名前を変更する。
--(12/19)
キャッシュのshrinkはできた。
文節候補のscore = 10 * (文節coreの長さ)^3 * log_2 (freq(core))
となっている。
これでは「すうじ」が「すう じ」になってしまう。
*coreの頻度を見ているが、coreが複数の品詞になる時には
文節構成のルールで使われたcoreの品詞の頻度を使うべきだ。
--(12/17)
現在xcharにはEUCが入っているが、そのうち
「ぴゃ」「あっ」「う゛」のような不可分な文字列を文字として
扱うことも考えてみた。
文節の関係を扱うようなメカニズムが必要かな?
Wnnみたいな大文節、小文節みたいなover killなやつはいらん。
キャッシュのshrinkの作業を進めた。
「freeなんとか」と「releaseなんとか」が混在していることに気がついた。
--(12/16)
doc/DEPWORDに仕様書を若干追加、、仕様書を書くのは面倒
candswapを若干書いた、ループの検出について考えないといけない。
文節末尾の処理を書いた。
--(12/12)
Anthyが正しいらしい。
malloc.h をstdlib.hに書きかえた
--(12/10)
segmentのリスト化のバグを修正
--(12/7)
doc/DEPWORDを追加
doc/POSの副品詞の説明を詳細にした
--(12/3)
11/30に書いた問題は解決した、次は何を解決しようかな?
*辞書キャッシュのシュリンク(作業を若干進めた ddic_shrink()を定義)
*学習機構(Jmode待ち)
*助動詞助詞の追加と整理
*ゼロ頻度問題
(頻度0のものは頻度1に格上げしているので、
頻度1のものは10ぐらいに上げるとよい?)
*ソースのEUC化(done 12/17)
--(12/2)
get_nthなんとか という関数では 0番目からカウントが始まっている
統一しとけば問題ないかな、、0は自然数だし。
get_nth_segment()という関数を作ってsegmentの配列への直接
アクセスから移行中。
--(11/30)
context中に存在するsegmentを配列にしているがこれを
double linked listにする。(done 12/3)
segcompose.c::push_back_noconv_candidate()を
xstr_hira_to_kata()を使うようにする。(done 12/2)
xstrtoi()の中身を書く(done)
ancylibを解放する関数を書く(?)
--(11/27)
数字の変換のメカニズムを考えないといけない。
ライブラリを解放する関数を作らんといけないか考えること。
「つま」 を 変換して 「積ま」 がでてくる原因を究明すること。
->文節が一個の時の処理を間違えていた。
--(11/26)
Wnn7に対抗して、ancy-kurumiを29日にリリース予定
HekeIMはjmodeに改名する予定
*カ変動詞(来る)の扱いが面倒
- カ変は活用によって漢字の部分の読みかたも変わるのでやっかい
*「ある(有る、在る)」が #aruという品詞になっている
-ラ行5段としてbase.dic.txtに追加して#aruは無視
「来りゃ」とかcannadicに入っているがなんでだろう?
--(11/18)
文節境界検出のアルゴリズムの変更のせいでwordsplitが
よくわからんことになっている。要修正
文節の後を無視して境界を付けるようにしたが、今度は
前の方だけに品詞を当てる部分がおかしい。
split_entが2つあるのは気色悪い。(fixed 12/10)
--(11/15)
動詞から助動詞原形は完成
助動詞「た」の音便の「だ」「読んだ」
断定の助動詞「だ」
を区別すべし。
geromagnonは11/14リリース
--(11/14)
recordを若干書いた
--(11/11)
dic_cannaというのを見付けた。cannadicよりもデカいみたい
動詞未然形と助動詞の接続を書いた
動詞連体と助動詞の接続を書いた「ようだ」のみ
--(11/9)
プロトタイプ宣言に変数名も書くことにする
--(11/8)
record管理APIを決めんといかん。
*histroyファイルにはいくつかのセクションがある
*セクションはカラムからなる
*カラムは文字列をキーにして選択される
*カラムは複数のデータを持つ
*(時間的に)長いトランザクションはない
トランザクションは一瞬
--(11/6)
動詞未然形の分類
*5段デフォルト 5
*5段 う U
*サ変 SI SE SA
*上下一カ変 D
libancydic/record.cが意味も無くopendirを使っている
fstatに書き直すべし。(直した 11/8)
--(11/5)
Cannaは文節の構成を複数作ることができないようである。
だから「早く」と「端役」が同時に候補として出現することはない。
\include ファイル名 と書けばルール定義ファイルの中でインクルード
ができるようになった。
*助動詞をきちんと処理する
*名詞をきちんと処理する
*mallocの返り値をチェックする
*cacheのシュリンクをする
*学習機構
セッション、ヒストリ、レコード管理(名前をどれにしようか?)の
アルゴリズム試案
起動時に ~/.ancy/last-record から前回のレコードを読む
現在のレコードは ~/.ancy/??(適当にユニークな名前)に保存して
アトミックに ~/.ancy/last-recordにmvする。
レコードは2つのセクション
*候補の交換
*候補のバイアス
--(11/4)
segexpandから品詞の割り付けを呼出すときに、割り付けに失敗したら
最後の一単語を無視してリトライするようにした。
動詞連用形は
5段「(書き)ます」デフォルト CST_V_RENYOU_5
5段「(書い)た」 CST_RENYOU_TA
5段「(死ん)だ」 CST_RENYOU_DA
デフォルト(上下一段カ、サ変) CST_DEFAULT
ruleparser.cを若干クリーンアップした。
次はinclude文の実装だす。
--(11/3)
文節の展開をして、品詞の割当てに失敗したら文節の後の方を
無視して再び展開し直すということにするが、この度合がよくわからん。
--(11/1)
書い て O た O ます X
書き て X た X ます O
見 て O た O ます O
動詞連用形の分類をもうちょっと見直すべし
「にょ」「にゅ」は終助詞
wordsplitterとsegsplitterの統合をした、
このせいでかなり、ちぐはぐな部分がある。
--(10/28)
付属語列の定義ファイルの形式を変更した。
付属語の定義能力は基本的にはこれで十分なハズ。
次にすべきことは、
*wordsplitの情報segsplitが利用するようにする
*学習機構&セッション管理
*複雑な構造の文節をどうやって処理するか考える
wordsplitterとsegsplitterを統合したので、wordsplit情報は
context中には不要になったと思う。
--(10/27)
とりあえず、segsplitをwordsplitから呼び出されるようにする。
名前やコメントに若干のずれがあるので、徐々に直す。
wordseq.txt をindepword.txtにした
--(10/26)
活用表の同じセル中に複数あるときどちらをデフォルトととしたのかを
どっかに書いとかんといけない。dic_cache.cを見ればわかるけど。
--(10/25)
「食べまくる」「走りまわる」みたいな動詞の接尾辞みたいなやつは
どうしたら良いんでしょうか?cannadicにはそんな単語は無い。
そもそも動詞の接尾辞の概念は無いみたい。
「まずいまくる」とかは当然、無視ね。
--(10/24)
segexpandやsegstructにおいても、
文節の後の方を無視することができるようにする必要がある。
自立語の活用の影響を受けるのは直後の付属語のみなので、
*活用する自立語 + 付属語1つ
*それに続きうる付属語の列
という二つの表を構成するといいかも。
wordborderは消した
--(10/23)
wordborderの内容をwordsplitterに移す必要がある。
そののち、wordsplitterとsegsplitterを統合する。
wordborder中で「私の」と「渡志野」の両方に対応する
wordlistに対して検索しているが、スコアの高い方だけで
良いはずである。
stinkerの次はgeromagnon
--(10/22)
名詞などの活用しない単語の活用形 は CT_NONE か CT_SYUSIかを
きちんと決めてない。
「使え る(KS)」は「使 う(W5r)」の可能動詞化したもの、
正しく処理しできていない。->問題無し、「使え る(KS)」の
辞書での頻度が0だっただけ。
セッション管理のところに辞書ファイルの操作をする部分を若干書き始めた。
次のような分類をする。
動詞未然形 動詞未然形ならば全て
動詞未然形* 同上
動詞未然形D デフォルトの活用形
動詞未然形U 「う」に接続する活用形
--(10/21)
品詞を表すwtype_tを 4バイトから8バイトにして、
フラグ(自立語 or 付属語)と活用形のサブタイプを追加した。
--(10/17)
たとえば動詞には未然形で
「書か」と「書こ」 がある。
どちらも未然形で区別する方法を考えてなかった。
活用形 (CT_XX)はビットマスクをやめて、ただの値にした。
--(10/15)
stinker branchをリリース(1012)
動詞の処理をする。
今、単語境界検出のスコアに長さの3乗を使っているけど、
ちょっとまずい。
--(10/14)
昨日の続き
wordsplitterで各文字から出ているリストの内容を
スコアの順にソートすれば良いのでは?
/bin/bash -> /bin/sh
stinkerリリース後のプラン
*wordsplitterの定義/文法の強化によって文節の末尾への対応の強化
*接頭辞の処理
*学習機構(辞書セッションの拡張)
*segstructの文法定義の強化
*segsplitとwordsplitの統合?
単純学習は
読み 変更元 変更先(例 きしゃの 気車の 貴社の)
という組で表わされる。
ほかにも単語のバイアスや単語のコロケーションによる
学習を考えている。
--(10/13)
SEGVは直した
遅いのは検索の深さを2に下げて対処したけど、
適切な枝刈りをすればもっといけるはず。
--(10/12)
N-gira アルゴリズムはなんとかなった。
*2回目以降の変換でSEGVる
*。が最後に来る文節を処理できない
*「私の名前は中野です」が遅い
--(10/11)
wordsplitterのバグ修正など
--(10/9)
wordsplitterの側にも正規表現エンジンが必要かな?
もうちょっと強化すれば平仮名で書かれた数字とか処理することが
できそうなんだけど、、
IIIMなんとかの説明とFreeWnnのソースを読もうとしたけど、
わけわからん。Ancyはきちんとドキュメントを付けるべし。
新しいwordsplitterにバグが残っているけど、古い方は除去した。
--(10/8)
新しいwordsplitterを書いている。
--(10/7)
wordborderの内容をwordsplitに移す、その間やっかいですぞ!
--(10/6)
ループを構成する状態は全てマージすれば良い!
wordborderを若干クリーンアップ
--(10/4)
下手をすると、もっと色々なところでε遷移のループができることが
わかった。要検討
--(10/3)
segstructではε遷移のループが無いことを保証しようとするが、
(a?)* はε遷移のループがありますね、やべぇ。
wordborderパターンマッチの部分を若干書いた。
--(10/2)
今はwordseq中のルールの数だけそれに対応する構造体を作っているが、
将来的にはツリーを作ってルールを統合したりする。
たとえば、
*動詞連用形 くださ る
*動詞連用形 くださ ら ない
の前半は共有できる。
--(10/1)
wordborderで、そのコンテキストの文字列中に含まれる
自立語の検索をやるようにしている。
このデータは最初のwordsplitが呼ばれた時のみに行なうようにする。
wordseq部のパーザを若干書いた。
--(9/28)
wordborderを執筆中、そのうちwordsplitの検索はいらなくなる。
--(9/27)
セッション管理を若干書いた。
--(9/25)
sdicに単語長ごとの単語の存在の有無を表わすビットマップを
付けた、内部ではヒストグラムと書いている。
--(9/24)
ハッシュのコードを今度こそマージした。
動作が遅いという指摘を受けた、対策は色々思いつくが
適当にやるのは危険である。
cannadicの単語の文字数と出現頻度のヒストグラム
1 111
2 2322
3 13834
4 26920
5 14470
6 10063
7 5714
8 3041
9 1409
10 554
11 310
12 143
13 74
14 32
15 14
16 7
17 3
18 4
19 0
20 1
--(9/23)
(9/21)にディスクを忘れたせいで、hashのマージをもう一度やるべし。
どの活用形でも同じ頻度なのはおかしい。(直したつもり)
wordborderで左右のスコアを同時につけずに、片方を先にやって
もう片方をそれによって決めるというのを検討する。
単語の接続は
接頭語 自立語 接尾語 付属語(助動詞、助詞)
として、wordboderでは自立語を中心に左右を見ていく
付属語のパートは定義ファイルに書いておかないといけないが、
その他はハードコードでよいかも?
--(9/22)
辞書の作成をMakefile.am中に書いた
INSTALLを更新した。
~/.ancyをいらなくした。
単語境界の検出のアルゴリズム(通称 N-gira モデル(改))の説明
文字列 A_1 A_2 A_3 .. に対して
R_1 R_2 R_3 ....
L_1 L_2 L_3 ....
の2つの列を考える。
A_nに対して、R_nはA_nの左が単語の右の境界である度合を評価し
L_nはA_nの左が単語の左の境界である度合を評価する。
文字数をスコアとした場合には
「わたしのなまえは」に対して
「わたし」、「なまえ」を評価した場合
「わたしのなまえは」
R 0 0 0 3 0 0 0 3
L 3 0 0 0 3 0 0 0
「わたしの(地名)」を評価すると
R 0 0 0 0 4 0 0 0
L 4 0 0 0 0 0 0 0
「わた」「たし」「しの」「なま」「まえ」
R 0 0 2 2 2 0 2 2
L 2 2 2 0 2 2 0 0
一文字の単語
R 0 1 1 1 1 1 1 1
L 1 1 1 1 1 1 1 1
RLそれぞれのトータル
R 0 1 3 6 7 1 3 6
L 10 3 3 1 6 3 1 1
積をとると
R*L 0 3 9 6 42 3 3 6
ここからどう切るかは考えていないが、最長一致すると。
「わたしの,なまえ,は」になる。
wordseqを除去した、wordsplit中に冗長な部分がたくさん有りそうな
気がする(splitのエントリや左の単語を見る部分)、
それから文節境界の制約条件を使っていない。
--(9/21)
部室にディスクを忘れたにゃあ
部室での開発分をマージした。
r氏のhashをマージした。
--(9/20)
単漢字の候補としての評価が間違ってるような気がするけど、
別にいいかな?
wordborder.cを作った、ある程度機能が追加できたらwordseq.c
を除去する。
自立語 助詞と助動詞以外、「単独で意味がある」
この定義によると動詞の未然形とかは自立語である。
自立語は文節の先頭につく、接頭辞がつくとそれは一つの単語。
Ancyでは当然上記の定義は使ってない。
--(9/19)
wordborder.cを作るかな?
--(9/18)
変更点などをChangeLogに書かない理由は、僕はChangeLogは
ソースの変更を記述するもんだと思ってて、
方針(気持ち)の変更は書きづらいからです。
文節が一単語で構成されている場合は、
あらゆる品詞が候補となりうるようにする。
「あ」という文節に対しては(あ)と読むすべての単語が入っているが、
「あ、」に対しては入ってないのでまずい。
でも単漢字以外の全ての品詞を文節の構成要素として登録しとけば問題ない。
辞書モジュールへ存在しない単語を引きにいったときに無駄な処理をしていないか
要チェック。
「ゃ」とかが「。」とかと同じ扱いになっているので、それらを
単語として扱うようにした。
--(9/17)
単語境界の検出の新しいアルゴリズムを考えた。
文字列 A_1 A_2 A_3 .. A_n があるとして、
それぞれの間が単語境界になるかどうかという評価を行なう、
A_i と A_i+1 の間の境界になりやすさを B_iとする。
各B_iは0で初期化される。
A_i A_i+1 .. A_i+j が単語になれば、 B_i-1 と B_i+jは
加算される、このスコアは単語の長さや頻度で決定される。
B_i .. B_i+j-1に対して減点してもよい。
「わたしのなまえは」を例とする。
「0わ0た0し0の0な0ま0え0は0」
「4+3わ0た0し3の4+3な0ま0え3は0」わたしの、わたし、なまえ を加点
「7+2わ0+2た0+2+2し3+2の7+2+2な0+2ま0+2え3+2は0」わた、しの、なま、まえ
「9わ2た4し5の11な2ま2え5は0」
「なかのです」
「0な0か0の0で0す」
「3+2な0+2か0+2の3+2+2で0す+2」なかの、なか、かの、です
「5な2か2の7で0す2」
句読点や数に対しては両サイドに十分高いスコアを付けると良い。
そんで、これをどういうふうに実装しましょうか?
に,ょ(促音の前で切っている) とか 猫ー(ーの前で切っている)とかも
そのうちなおす。
--(9/15)
バグは直した、ルールパーザではなくて、ただの初期化忘れ。
この手の不規則なバグはつらいにゃあ。
次はトークンのリストから正規表現のツリーを作る。
でけたにゃあ。でも連接しか処理できない。マクロ展開によって生じる
括弧ぐらいは処理できるようにする予定。(したはず、要チェック)
トークンリストから構文木を作る際に | (縦棒)は一つのトークンとして
扱い、構文木の構成のパスのあとでこっそりリストを繋ぎかえて
形を合わす、これをpostprocessと呼ぶことにする。
それからsegstruct中では初期化時にいろんなものがリークする
良いものと悪いものの基準を作らんといけない、
あとから使わないものは解放すべしという方針でも別に構わんかな?
5000行到達
RAY'S RULE OF PRECISION
Measure with a micrometer.
Mark with chalk.
Cut with an axe.
文法ファイルなどもインストールするようにした。
.ancyの記述が楽になる。
なんか単語境界の検出部の機能が貧弱すぎるような気がする。
問題点を列挙してw氏に検討してもらおう。
--(9/14)
ルールパーザにバグがあるっぽい。
一行を長くすると落ちる。
--(9/13)
文節の関係のうちもっともシンプルなものを処理しようと考えている。
〜ものである。
〜してみる。
〜するとき。
などの漢字にならない従属する文節を前の文節とくっつけてみよう。
そもそも、文節間の関係のサーチは可能性が膨大でヤバそうだけど、
この手のやつは前後の一文節しか見ないで良いから得だ。
cannadicには「だい10かん」などの数字入りのエントリがある、これは
mkdicの時点で除去する。
cannadic 0.91の「えおじん」のエントリがダブっている上に片方が変で
ある、そもそも「エオジン」ってなんだ?
先送りしとるけど、正規表現のツリーの構成を決めないと進めない。
トークンの列 -- マクロの展開 -> 内部表現の列 -> 構文ツリー -> オートマトン
てな感じかな?
構文要素は
アトム 、 ( ) 、* 、 ( | )
ちょっとマクロの部分を書いたけども、マクロの再定義や
マクロ定義中に別のマクロを使うことなどを考えないといけない。
TODO r氏の辞書エントリのハッシュのコードを取りこむ、
その後に辞書キャッシュから辞書セッションの情報を使うようにする。
--(9/12)
candswap.cとcandswap.hを追加した。
しばらくemacs clientを作ろうと思う。
--(9/10)
dic_session.cとdic_session.hを作った。
--(9/9)
そろそろ、文法定義ファイルのドキュメントを書かないといけない。
それから、正規表現のパーザの停止性は入力を確実に消費することによって
保証する方針とする。このためにはε遷移のみのループを排除することが
できれば良い。
当面の課題はsegstruct中の正規表現のパーザを構文解析とツリー構築の
2パスに分離することと、候補の優先順位を付ける良いメカニズムを
設計することである。
候補の評価は
だから > 田から
私の > 渡志野
中野 > 中の ?
となるべきである。
--(9/6)
候補の列挙を書いている最中なので、候補がほとんど出ない。
AncyはAncy Never Comfort You.らしい(shin先輩ありがとう)
候補生成がバグってる、直前で決定した品詞が使われてない|
品詞が決定されてない。
POS_NONEはワイルドカードで、POS_なんとかの未定義な品詞
がマッチしていたのでPOS_INVALを作って逃げた。
--(9/5)
昨日の「。」は直した。
正規表現の文法について考察中。
*,.,+などは後に付くんですね。
--(9/4)
データの流れを整理しておく、
a segsplitで文節の境界が検出されsegcomposeに送られる
b ->segcomposeはsegexpandを呼出す
c ->segexpandは分割のパターンを列挙してからsegstructを呼ぶ。
d ->segstructは文節の構造が適していれば品詞情報を付加して
segcomposeのcommit_split_entを呼びだす。
「動詞 助詞 。」というパターンは「。」があるために文節の形式であると
認識できていない。dのところで左右の記号を除去しないといけない。
--(9/3)
文節の構造の正規表現の部分が動き出した.
--(9/1)
パーザは分離した。
これから文節の構造のevaluatorを作るが、
文節の構造は正則言語であると仮定する。
正規表現は正則じゃないんですねぇ、これが。
--(8/31)
文法定義ファイルのパーザを分離する。
--(8/27)
副品詞はCOS(Class Of Speech)と命名した。
--(8/26)
bigramのクラス定義ができるようにした。
segexpandの構造を変えようと思った。
今はA*で分割の候補を出して、それをすぐにコミットしていたが、
出した候補をもういちど並び換えるようにする。
A* -> depth firstへ書換える。枠組はA*の方がでかいので、
構造を変える必要は無いのだが、だからといって変えずにいては某ソフトの
ようにわけのわからんことになる。
候補の入れ替えはcandswapというソース名にすることにした。
segexpandは一定の個数で切るか、一定のスコアで切るか、はたまた両方か?
今は正のスコアを持つもののみをコミットする。
--(8/25)
連体詞は名詞にした。
--(8/24)
「回す」はさ行5段、(「まわる」はら行5段こっちはcannadicにはのってないので
base.dicに追加)
カーソルキーを使わないでいけるようにすべしとのおことば、
しかし文節の伸縮じたいそうしょっちゅうあってはならんです。
「う゛」->「ヴ」は書いたが、「鵜゛ぁいおりん」は無いでしょう、、
--(8/23)
昨日書いたあとの品詞を固定することを「バインドする」と呼ぶことにする。
wordseq.cの関数名を整頓した。
形容動詞「あほだ」に対して「あほ」も形容動詞詞終止形になってしまっている。
これは原形CT_NONEと終止形CT_SYUSIが内部で同一だからだ。
(直したけど、「あほ」は形容動詞原形という扱いになって、名詞ではない。)
直した、sdic.c中に形容動詞原形は名詞原形にすると書いた。
ほかの場所に書いても良いかもしれない、辞書の種類が増えたら要検討。
片仮名の候補が出るようにしたが、「う゛」には未対応。
学習のフレームワークとして。
1,短期的な候補のいれかえ
2,長期的な頻度の更新
3,長期的な結合情報の取得
(4,ユーザ単語辞書)
を考えている。
--(8/22)
Ancyの組込みができた。
wordseqで純粋なbigramのみをやっているが、
「なかのです」という入力に対して
名詞+"の"で「なか」+「の」がマッチして、「の」が助詞になっているにも
かかわらず、
名詞+"です"で「の」+「です」がマッチしてしまうのはおかしいので、
マッチした際に後の品詞を固定するような演算子を付けるといいかも。
この手では
「しろいはな」
は「白井」の方が先に名詞+"は"でマッチすれば「は」は助詞になってしまい、
「白い」がマッチすればそうならない、これは単語の優先順位によって
「白い」の方をとるようにすればよいと思う。
形容動詞の語幹という活用形を作る?
--(8/21)
wordseq.cのコメント/ドキュメントを書かないといかん。
--(8/20)
しょうもないバグをとった。
品詞クラスの定義ファイルの形式を決定しないといけない。
たとえば定義を代入にするか束縛にするか?
@C = @A & @B
@C = @A | @B
などの定義文が考えられる。
--(8/19)
ソース内のグローバル変数にstaticを付けるのを忘れていた。
そのうちソースをEUCにする。
--(8/18)
昨日書いたbi-gramというのは、ある単語と次の単語という組の
出現する確率を評価するものである。
例えば 「名詞 + 'の'」 とか 「終助詞 + バリア 」とかである。
カテゴリーとしては
.単語 "の" など
.品詞 名詞 数詞 形容動詞*連用形 など
.クラス 上の2つのカテゴリーおよびクラスに対して 和積差などをやったもの。
wordsplitのget_left_seq_begin()を書くこと、
全検索モードのところにも取りこむ。(Done)
アルゴリズムのドキュメントを書く。
dic_sessionの意味とAPIを再検討する必要がある。
「この」-「あか」 で +1000にすると
この、あ、か になってしまう、これは「この」を決定する時にはこのルールは
使用されるが、「あ、、」を決定する際には使用されないからである。
--(8/17)
bi-gramによって単語の接続を評価する。src/wordseq.[ch]の追加。
その前に品詞の分類を決定しないといけない。
テーブルには
品詞 * 品詞
単語 * 品詞
品詞 * 単語
このテーブルはとりあえず、ソースの中に埋め込むことにする。
単語を扱うためには単語のグループ化が必要。
--(8/15)
活用表をlibancydic/dic_cache.cからどっかに移すべきかな?
書きおわるまで保留。
か変活用は保留
cannadicの「うてな」のエントリは不十分だ。
句読点および文末をあらわすバリアを作らんといかん。
活用表は書ききった(か変活用以外)。
~/.ancyを読むようにした。
cannaは接続詞と感動詞を同一にしている。
--(8/14)
文節間の評価の調整は単語の結合だけではなくて、文節の格(みたいなもの)
の相関によっても行える。
「私の」 の次に 「名前は」があると、「渡志野」の場合よりもスコアが高い。
wtype_tをポインタ渡しするかどうかにバラつきがあるが、
この決定はしばらく保留する。
動詞の活用クラスを書いた。いくつか変な特例になっている部分があるので
要調査。
CC_AJも音便型などを要調査
CC_AV(形容動詞)は名詞でもあるのでやっかい
Cannaは助詞、助動詞を辞書に持ってない。
か行5段の活用表を作った。
が行5段の活用表を作った。
Canna辞書には#N01が無い?「千」が変換できない?
--(8/12)
同音異義語の多い単語は頻度よりも結合情報に従い、
そうでない単語は頻度に従う。
「あ、、、」というような単語でない文字列が右に付随するようなものを
segsplitで処理するようにした。
基本辞書の形式が古かった、ついでにJISだった。
get_nth_dic_ent_freq()の中身を書くこと。(書いた)
評価を行わないといけないところは、
.単語境界の設定。
.文節境界の設定。
.候補の評価(文節内と文節間)。
「あかい」を検索する際には「あかい」のエントリを確保する。
「あか」 という形容詞活用の語幹があればそのエントリに追加する。
TODO cache_get_seq_entでsdic_fill_seq_ent_by_xstrで一つもエントリが
追加されなければddic中のエントリも削除して、NULLを返さないといけない。(done)
--(8/11)
品詞
.動詞
.名詞
.接続詞
.形容詞
.副詞
助詞、形容動詞
活用形の列挙をする。
活用のことを英語でconjugationというらしい。
環境変数を使うといろいろとわけのわからんことになるので、
環境変数を使うことはあんまり考えず、
~/.ancyを設定ファイルとする。
conf.cとconf.hを作った。
--(8/10)
wtype_tの構造の草案。
.その文字列の活用形
.原形の活用
.品詞
.品詞サブタイプ
ddicのtrieは無駄に複雑なので、線型探索にした。
ハッシュぐらいは追加する。
xchar.hはEUCにした。
--(8/9)
xchar.hを作成、TODO EUCにする。(した8/10)
--(8/7)
サン=テグジュペリの「夜間飛行」を読みながら文節の構成を考えた。
括弧開きの類は後の文節の一部として扱い、括弧閉じや句読点の類は
前の文節の一部として扱う。
「なんとか会社」は音便が入って「なんとかがいしゃ」になる。
「じま」島 じゅっ 「10」 など。
cannadicは「かいしゃ」と「がいしゃ」のエントリを持つ
「がいしゃにのる」とか変換して「会社に乗る」と間抜けだが、
しかたないです。MS-IMEも「がいしゃ」->「会社」を候補に出してきた。
--(8/6)
split_ent(文節の単語への切り分けの入った構造体)中の
単語のボーダーのmarkは文字の右側についているが、
contextの場合は左にmarkをつけている、これは一貫性が無い。(直した8/10)
--(8/5)
xstrcatを追加、
--(8/1)
候補の列挙部を若干書き足した。
--(7/31)
WnnとCannaを読んでみたが、意味不明な部分が多すぎだが
それ以上に略語が多い、Ancyはそんなことが無いように
プログラムのドキュメントを十分に追加するつもり。
--(7/30)
文節とその中の単語境界を与えられた時の候補の列挙の戦略。
主要な単語を決定するその単語の全候補に対して前後の単語を
決定する。
--(7/24)
メモ 「わたしのなまえはなかのです」を変換した際に
辞書キャッシュへのhitは300回missは100回ほど。
--(7/22)
辞書エントリの番号と単語の番号のずれは直した。
なんか辞書のエントリの部分が冗長かつparseが面倒そうだが
まあ良いか、、
libancydicのTODOを書いておく
,活用形の処理(a)
,複数セッションの同時処理の効率化(a)
,学習機能(b)
,設定ファイルの処理(a)
,相関辞書(b)
,辞書ファイルのコンパクト化(b)
a,bの2段階で強化する予定。
--(7/21)
segment(文節)関係のモジュールの構成を整理した。
今のsegexpandは
a,短い文節はきちんと処理できる
b,長くて意味不明な文節は適切に処理を切り上げる
ということになっているが、
長い数字などの文節をきちんとやる保証をする必要がある。
composeの際には単語ボーダーを設定されたsegmentが渡されるが、
この単語の一つをkeywordとして、全候補を出力する。
それ以外の単語については適当。
辞書エントリの番号と単語の番号がずれとる。
--(7/17)
segcompose.c、segcompose.h、segment.hを追加した
context.cからcompose_segmentが呼び出され、
compose_segmentからexpand_segmentを呼ぶことにより
分割候補が出力され、その候補それぞれに対して変換
候補を割当てる。
--(7/14)
segcompose.cをsegexpand.cに名前を変えた。
A*みたいな凝った方法を使う必要は無いのかもしれない、
あるのかもしれない、わからんので使っている。
とりあえず、文節の分割っぽいことはできるようになった。
次には候補の割り当てをするので、辞書ライブラリに
辞書エントリを書く必要がある。
--(7/13)
ST_WORDPARTを除去、あるひらがな文字列を与えた際にそれが
なんらかの単語の部分であるかどうかを得る手段はなくなった。
新形式の辞書の検索を書き終った、次はこれを組込む。組み込んだ。
次はsputxchar,sputxstrを書く。
--(7/12)
新形式の辞書の読み込みをコーディング中、、
--(7/11)
segmentのリサイズを書いた。
word_splitterの未知の文字に対する処理にバグ発見。
--(7/10)
旧形式のsdicを作る部分を消した。
次はsdicの読み込みを新しい形式に対応させる。
sdicの読み込みを作業中。
--(7/9)
新しいmkancydicを少し書いた、indexは約400kと以前の1/6まで小さくなった。
あとは辞書エントリとかを書く。
segcomposeを少し書いた。
--(7/8)
候補情報中にその候補の字面だけではなくどの辞書エントリを使用したの
かというような情報を持つ必要がある。このためには今の辞書のロックの方法は
まずい。 、、ので直した。
それからcannadic-0.91で辞書の形式が変更されたので、この機会に辞書の
書き直しのwork aroundを開始する。
--(7/7)
変換エンジンのパイプラインが見えてきたので、全貌をメモしておく。
1,単語の境界を設定する wordsplit
2,設定された単語の境界から文節の境界を設定する segsplit
3,設定された文節から候補を作り出す segcompose
この際には1で設定した単語の境界は無視して再び単語境界の
候補を列挙する。
(4),前後を見て、候補の評価値を変動させる。
5,候補をソートする。
--(7/6)
lock_dict,unlock_dictを辞書ライブラリに追加した。
segmentのリサイズを若干書いた
--(6/29)
「なまえはなかのです」は
「なまえ、はなか、の、、」もしくは
「なま、えはな、かの」の2通りがある
1単語目の長さにバイアスをかけると前者を選択できる。
--(6/28)
まったく適当な文節切りを書いた、
それから文節の伸縮のインターフェースを書き始めている。
--(6/25)
少し基本辞書を書いた
--(6/24)
adverb副詞
aj形容詞
cj接続詞
etcその他?
kk団体名
name人名
noun名詞
pre接頭語
suc接尾語
tankan漢字
verb動詞
--(6/23)
とりあえず
助詞+助詞というシーケンスは減点
ははは (母は)
はは (歯は)
がきちんと区別できるかな?
fill_dic_entを少し書き足した。
--(6/21)
sdic.cを若干クリーンアップした、次は辞書のエントリを実際に読みこむ部分
fill_dic_entを書く。
--(6/20)
sdicの構造は以下の3つに分類できる。
trie tree 辞書にある文字列をすべてtrie treeのノードとしている
index table trie treeのノードから辞書エントリを引くためのテーブル
dic entry 辞書エントリ、現時点では変換後の文字列、頻度、品詞が入っている
--(6/19)
辞書のキャッシュを書きはじめた。
--(6/18)
それから、昨日書いていた。テーブルを書いた。
あるシーケンスはテーブルのインデックスといくつの辞書エントリを
持つかという情報を保持し、そのインデックスをもとにテーブルを引くと
辞書エントリ中のインデックスが獲得できるというしかけになっている。
これで活用とかも扱える。
cannaの辞書には助詞が無い。
--(6/17)
品詞情報の出力以外は書き終ったが、辞書には語幹しか書いてないので
ちょっと困った。
ツリーのノードと辞書のエントリの間に一段テーブルを入れようと思う。
その前にフロントエンドをなんとか書こうと思う。
INSTALLを少し書いた。
記念すべき初の単語切り
せっかく、だから、おれ、はこ、のあ、かの、とびら、を、えらぶ、ぜ
--(6/14)
sdicのファイル構造を悩んだりしていたけど、シェアードライブラリ(DLL)に
するという手でごまかした、先日書いたmmapとかは抹殺してdlopenとか
を使うことにする。
あいかわらずsdicとddicの関係は決めれないが、最初は学習無しの変換
エンジンでいいでしょう。
--(6/11)
mmapの最初の方を書いた。
sdicとddicの関係について悩んでいるが、プロセスの単一の
インスタンスで複数のユーザの要求に応えるのは面倒かつ
あんまり必要そうでは無いのでやめる。
いざとなればlibancydic全面書きかえをする。
TODO sdic_node::nr_dicentを書く
--(6/8)
昨日付けわすれていた頻度情報の読み込みを書きました。
ddicのセーブの部分を大体書きました。あとは読みエントリに
辞書エントリのオフセットを書くだけです。現時点でファイルサイズは
4MBぐらいになってそのうち1.5ぐらいがインデックスです。
--(6/7)
今日は辞書のテキストファイルから一行をパーズしてddicに追加する関数を
書きました。
さて、include以下にあるヘッダファイルの説明をします。
include以外に置かれたヘッダと違ってこれらのヘッダは
ライブラリのユーザ,libancy,libancydicの3つのうちいずれか
2つによって使用されます。
ancy.h ライブラリのユーザ IMEなどが使うインターフェースを定義しています。
ancy_context_tによって変換途中の内容をあらわしていて、文字列のセット、
変換結果の取得などが可能です。
dic.h
ひらがな(あるいは変換もとの文字、数字などを含む)の列から内部の構造体を
取りだすために使用します。
wtype.h
単語の品詞を意味するwtype_tを定義しています。
xstr.h
Cの普通の文字列の扱いでは、文字ごとにバイト数が変ったりしてやっかいなので
すべての文字をxcharという型として扱い、文字列はxcharの列へのポインタと
文字列の長さを持った構造体を用意しています。
xstr.hではこれらに関わるデータを定義しています。
--(6/3)
nr_はNumbeRofのつもりです、Linuxのカーネルの慣習のようです。
ものの数を表現する変数の名前などにつかっています。
今日はddicをsdicとしてsaveするためのプログラムを若干書きはじめました。
今のところは辞書形式がddicとsdicの二通りなのですが、もし
3種以上に増えることがあるならば、オブジェクト指向的なディスパッチを
書かないといけないかもしれません、とりあえず、現在のところはsdicなんとか
という関数はsdicの関数というように関数の名前で分けています。
--(6/2)
*わかりにくいかもしれませんが、グローバル変数にはg_という
プレフィクスを付けるようにしています。
*ヘッダファイルの話
ヘッダファイルは同じモジュール間で情報を共有するためのものと、
モジュールの外に公開する情報を示すためのものがあります
現在のancyの実装では1モジュールはたいがい1ソースに収まっているので
後者のヘッダファイルしかありません。
どうやって切り替え、共存していくのでしょうか?
*スレッドの話
ancyはリエントラントには作ってないので、ライブラリのエントリでは
ロックをかけるようなコードを書いた方が良いけど、それはまだ先
それからヘッダはC++からでもリンクできるようなお馴染の文を
追加しないといけない。
*wordsplitとsegsplitのメモリ解放の話。
はいったときにすべきか出る時にすべきか?
*(5/31)にwordsplitterの後半と前半のやりかたを統合すべし
と書いたが、それはすでにやった。
別の問題としてsegsplitterではモジュールの分離性を高めるために
処理をする前にcontextのデータを全部ローカルにコピーするように
したがwordsplitterにも同様のことが必要
--(6/1)
「にわににわにわとりがいる」を単語で切った時には
「庭」「二羽」というように異なる単語の切り方の候補がでる。
単語の切り方を一通りに仮定するとこのような問題が発生するので
現実的な解決策としては、変換処理を次のような流れでやるとよい
1,単語の区切を探す
2,それを利用して文節の区切を探す
3,単語の区切を削除して、各文節内で単語の境界を切り直す
--(5/31)
wordsplitterを最後まで書いた、
wordsplitterは前半は3単語先まで
後半は全部の可能な切り方を列挙するという方法で
最大の評価のものを選ぶようにした。
次にすべきことは前半の評価法を後半のやりかたに統合すること
である。
libancydic/に ancymakedic というコマンドを作るようになっている
今はテキスト形式の辞書ファイルを食わせて、
そのtrie treeを表示するコマンドであるが、近日中に読んだファイルを
sdicとして出力するコマンドにする予定である。
--(5/30)
辞書のスケーラビリティ向上のために、複数の辞書ファイルを持つようにした。
いままでのdicなんとかをddicという名前に変えた。
ddic dynamic dictionary メモリを多く使う、検索が速い、書換えることができる
sdic static dictionary ファイルイメージをmmapして使う(未実装)
libancydic/にancymakedicというコマンドを作ることにした。
これはテキスト形式の辞書をddicとして読み込み、sdicとして出力する
プログラムである。
--(5/28)
ワードスプリッタ(単語に切るやつ)を半分ぐらい書いた、
今のところ、単語の長さの和を最大にするような切り方を
するようにしている(単語の数を最小)。
--(5/28)
シェアードライブラリにした、
実行する際には
$ cd src
$ ./test_ancy
とやってください。
--(5/26)
src/以下のファイル
src/main.c このライブラリを使う人が呼び出した関数を内部の形式に
変換して実行する。例えばancy.hで定義されたancy_context_t
は実は内部ではstruct ancy_contextであるといったような
ものである。
src/context.c contextはある文字列に対して単語、文節の区切り、候補などの情報を
もつ。
src/wordsplit.c ひらがなの文字列を単語に切る
src/test_main.c ライブラリの試しなど(このソースはライブラリには含まれない)
--(5/26)
ancyのバージョンは例えば今日ならば526というように
日付を利用している。
--(5/19)
ancyには以下のディレクトリがある。
src/
辞書管理以外のプログラムおよびtest_main.c
include/
ancy.hはancyを使用するユーザのプログラムによってインクルードされる
その他は辞書ライブラリとのインターフェース
libancydic/
辞書の管理を行う。
|