namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: chasen module
- From: knok@xxxxxxxxxxxxx (Nokubi Takatsugu)
- Date: Thu, 19 Nov 1998 11:27:14 +0900
- X-ml-name: namazu
- X-mail-count: 01626
<19981119020219N.satoru@xxxxxxxxxxxxx>の記事において
satoru@xxxxxxxxxxxxxさんは書きました。
>> すごい! 参考までに diff を貰えませんか? KAKASI のモジュール化に挑
>> 戦してみたいです。
それほど大きくないので、このメールの最後につけておきます。1.2.0.8に
対する差分です。
モジュールの方は<http://www.daionet.gr.jp/~knok/chasen/>にあります。
chasenにもパッチを当てる必要があるので、ちょっと面倒かもしれません。そ
のかわり、パッチにはちょっとしたメモリ関係のバグ修正を含んであります。
このバグも次のリリースでは修正されるそうです。
*** mknmz.pl Thu Nov 19 09:22:58 1998
--- mknmz.pl.new Thu Nov 19 09:40:52 1998
***************
*** 28,33 ****
--- 28,34 ----
require 5.003;
use Cwd;
use English;
+ use chasen;
use strict; # strict にしました v1.2.0
# おびただしい数のグローバル変数
***************
*** 56,61 ****
--- 57,63 ----
$TEXT_TITLE, $TITLEW, $TMP_I, $TMP_W, $TMP_P, $TMP_PI,
$URL_PREFIX, $USAGE_JA, $USAGE_EN, $UnsignedCmp, $UuencodeOpt,
$VERSION, $WAKATI, $LANGUAGE, $WAKATITMP, $WORDLIST,
+ $CHASEN_PM, @CHASEN_OPT_DEF, @CHASEN_OPT_MORPH, @CHASEN_OPT,
$WORDLIST_);
##
***************
*** 138,146 ****
--- 140,153 ----
## ChaSen 1.51 (単なるわかち書き)
$CHASEN = "%OPT_PATH_CHASEN% -j -F '\%m '";
+ @CHASEN_OPT_DEF = ('%OPT_PATH_CHASEN%', '-j', '-F', '%m ');
## ChaSen 1.51 (形態素解析の品詞情報を扱う)
$CHASEN_MORPH = "%OPT_PATH_CHASEN% -j -F '\%m %H\\n'";
+ @CHASEN_OPT_MORPH = ('%OPT_PATH_CHASEN%', '-j', '-F', '%m %H\n');
+
+ ## chasen.pm
+ $CHASEN_PM = 0;
## 日本語処理のディフォルト (Makefile から継承)
$WAKATI = $%OPT_WAKATI_DEFAULT%;
***************
*** 1026,1031 ****
--- 1033,1040 ----
&check_present_index;
chdir $target_dir || die "$target_dir: $!\n";
+ &chasen::getopt_argv(@CHASEN_OPT)
+ if ($CHASEN_PM && @CHASEN_OPT);
# $URL_PREFIX が \t なら $target_dir の cwd を元にセット v1.1.1
$URL_PREFIX = cwd() . $PSC if $URL_PREFIX eq "\t";
$TARGET_DIR = cwd();
***************
*** 1143,1150 ****
while (defined($ARGV[0]) && $ARGV[0] =~ /^-/) {
$TARGET_FILE = ".*" if $ARGV[0] =~ /a/;
$WAKATI = $KAKASI, $MorphOpt = 0 if $ARGV[0] =~ /k/;
! $WAKATI = $CHASEN, $MorphOpt = 0 if $ARGV[0] =~ /c/;
! $WAKATI = $CHASEN_MORPH, $MorphOpt = 1 if $ARGV[0] =~ /m/;
$UuencodeOpt = 1 if $ARGV[0] =~ /u/;
$MailNewsOpt = 1 if $ARGV[0] =~ /h/;
if ($ARGV[0] =~ /r/) {
--- 1152,1162 ----
while (defined($ARGV[0]) && $ARGV[0] =~ /^-/) {
$TARGET_FILE = ".*" if $ARGV[0] =~ /a/;
$WAKATI = $KAKASI, $MorphOpt = 0 if $ARGV[0] =~ /k/;
! $WAKATI = $CHASEN, $MorphOpt = 0, @CHASEN_OPT = @CHASEN_OPT_DEF
! if $ARGV[0] =~ /c/;
! $WAKATI = $CHASEN_MORPH, $MorphOpt = 1, @CHASEN_OPT = @CHASEN_OPT_MORPH
! if $ARGV[0] =~ /m/;
! $CHASEN_PM = 1 if $ARGV[0] =~ /p/;
$UuencodeOpt = 1 if $ARGV[0] =~ /u/;
$MailNewsOpt = 1 if $ARGV[0] =~ /h/;
if ($ARGV[0] =~ /r/) {
***************
*** 1820,1825 ****
--- 1832,1840 ----
my ($contents) = @_;
my (@tmp);
+ if ($CHASEN_PM && @CHASEN_OPT) {
+ @tmp = split(/\n/, &chasen::sparse_tostr($$contents));
+ } else {
# IPC::Open2 もあるけど試したらちょっと変でしかも遅かった
open(WAKATI, "|$WAKATI > $WAKATITMP");
binmode(WAKATI);
***************
*** 1831,1836 ****
--- 1846,1852 ----
@tmp = <WAKATI>;
close(WAKATI);
unlink $WAKATITMP;
+ }
# ひらがなだけの語は削除する -H オプション時
# このコードは古川@ヤマハさんがくださりました。[11/13/1997]
--
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx, knok@xxxxxxxxxxxxxxxx (private)
nokubi@xxxxxxxxx (official)
knok@xxxxxxxxxxxxx (isoternet)