[81543] trunk/dports/java
hum at macports.org
hum at macports.org
Mon Aug 1 06:55:16 PDT 2011
Revision: 81543
http://trac.macports.org/changeset/81543
Author: hum at macports.org
Date: 2011-08-01 06:55:15 -0700 (Mon, 01 Aug 2011)
Log Message:
-----------
added a new port for dualist version 0.1; #29984
Added Paths:
-----------
trunk/dports/java/dualist/
trunk/dports/java/dualist/Portfile
trunk/dports/java/dualist/files/
trunk/dports/java/dualist/files/Makefile
trunk/dports/java/dualist/files/SimpleMecabPipe.java
trunk/dports/java/dualist/files/dualist
trunk/dports/java/dualist/files/dualist-mecab
trunk/dports/java/dualist/files/patch-mecab.diff
Added: trunk/dports/java/dualist/Portfile
===================================================================
--- trunk/dports/java/dualist/Portfile (rev 0)
+++ trunk/dports/java/dualist/Portfile 2011-08-01 13:55:15 UTC (rev 81543)
@@ -0,0 +1,104 @@
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
+# $Id$
+
+PortSystem 1.0
+
+name dualist
+version 0.1
+categories java textproc
+platforms darwin
+maintainers hum openmaintainer
+license Apache-2.0
+
+description An interactive machine learning system for building classifiers quickly.
+
+long_description DUALIST is an interactive machine learning system for building classifiers \
+ quickly. It does so by asking \"questions\" of the user in the form of both data \
+ instances (e.g., text documents) and features (e.g., words or phrases). It \
+ utilizes active and semi-supervised learning to quickly train a multinomial \
+ naive Bayes classifier for this setting.
+
+homepage http://code.google.com/p/dualist/
+master_sites googlecode:${name}
+
+checksums sha1 7a2fc1fd432c71e2575a1514a946bbf68652fdfa \
+ rmd160 8b4ca3fcd3ec42eeda43235c246390f07a849998
+
+depends_run port:play
+
+use_zip yes
+worksrcdir ${name}
+
+set java_home /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
+
+pre-configure {
+ if {![file exists ${java_home}]} {
+ ui_error "Java 1.6 is required, but not located at ${java_home}"
+ return -code error "Java 1.6 missing"
+ }
+}
+
+use_configure no
+universal_variant no
+
+build.cmd true
+
+set share_java_dir ${prefix}/share/java
+set dualist_dir ${share_java_dir}/${worksrcdir}
+
+destroot {
+ # Copy the distribution.
+ xinstall -m 755 -d ${destroot}${share_java_dir}
+ copy ${worksrcpath} ${destroot}${share_java_dir}
+
+ # Configure working directories.
+ xinstall -m 1777 -d ${destroot}${dualist_dir}/tmp
+ system "chmod 1777 ${destroot}${dualist_dir}/public/results"
+ destroot.keepdirs ${destroot}${dualist_dir}/tmp \
+ ${destroot}${dualist_dir}/public/results
+
+ # Install an extra script for this port.
+ xinstall -m 755 ${filespath}/dualist ${destroot}${prefix}/bin
+ reinplace "s|@prefix@|${prefix}|g" ${destroot}${prefix}/bin/dualist
+ reinplace "s|@java_home@|${java_home}|g" ${destroot}${prefix}/bin/dualist
+
+ notes "To try DUALIST, run 'dualist' and open http://localhost:9000/."
+}
+
+post-deactivate {
+ ui_msg "To revert the system after uninstalling the port,"
+ ui_msg "delete the dualist directory:"
+ ui_msg " $ sudo rm -rf ${dualist_dir}"
+}
+
+variant mecab description {Use MeCab to analyze Japanese texts} {
+ depends_lib-append port:mecab-java
+ patchfiles-append patch-mecab.diff
+
+ post-extract {
+ xinstall -m 644 -W ${filespath} \
+ Makefile \
+ SimpleMecabPipe.java \
+ ${worksrcpath}
+ system "ln -s ${prefix}/share/java/mecab.jar ${worksrcpath}/lib/"
+ }
+
+ post-patch {
+ reinplace "s|@java_home@|${java_home}|g" ${worksrcpath}/Makefile
+ }
+
+ build.cmd make
+
+ post-destroot {
+ # Install an extra script for this variant.
+ xinstall -m 755 ${filespath}/dualist-mecab ${destroot}${prefix}/bin
+ reinplace "s|@prefix@|${prefix}|g" ${destroot}${prefix}/bin/dualist-mecab
+ reinplace "s|@java_home@|${java_home}|g" ${destroot}${prefix}/bin/dualist-mecab
+
+ notes-append "For Japanese texts, run 'dualist-mecab' instead of 'dualist'."
+ }
+}
+
+livecheck.type regex
+livecheck.url http://code.google.com/p/dualist/downloads/list
+livecheck.regex ${name}-(\[0-9.\]+)\.zip
Property changes on: trunk/dports/java/dualist/Portfile
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: trunk/dports/java/dualist/files/Makefile
===================================================================
--- trunk/dports/java/dualist/files/Makefile (rev 0)
+++ trunk/dports/java/dualist/files/Makefile 2011-08-01 13:55:15 UTC (rev 81543)
@@ -0,0 +1,16 @@
+JAVA_HOME=@java_home@
+
+JAVAC=$(JAVA_HOME)/bin/javac -encoding UTF-8 -cp lib/mallet.jar:lib/mecab.jar
+JAR=$(JAVA_HOME)/bin/jar
+
+TARGETS=lib/dualist-ja.jar
+
+all : $(TARGETS)
+
+$(TARGETS) : SimpleMecabPipe.java
+ -mkdir -p classes
+ $(JAVAC) -d classes $<
+ $(JAR) cfv $@ -C classes .
+
+clean:
+ -rm -rf $(TARGETS) classes
Added: trunk/dports/java/dualist/files/SimpleMecabPipe.java
===================================================================
--- trunk/dports/java/dualist/files/SimpleMecabPipe.java (rev 0)
+++ trunk/dports/java/dualist/files/SimpleMecabPipe.java 2011-08-01 13:55:15 UTC (rev 81543)
@@ -0,0 +1,47 @@
+package dualist.ja;
+
+import cc.mallet.pipe.Pipe;
+import cc.mallet.extract.StringSpan;
+import cc.mallet.extract.StringTokenization;
+import cc.mallet.types.Instance;
+import cc.mallet.types.TokenSequence;
+
+import org.chasen.mecab.Tagger;
+import org.chasen.mecab.Node;
+
+public class SimpleMecabPipe extends Pipe
+{
+ static {
+ try {
+ System.loadLibrary("mecab-java");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("ERROR: Failed to load mecab-java native code.");
+ System.err.println(e);
+ System.exit(1);
+ }
+ }
+
+ public Instance pipe (Instance carrier)
+ {
+ CharSequence input = (CharSequence) carrier.getData();
+ String string = input.toString();
+ Tagger tagger = new Tagger();
+ Node node = tagger.parseToNode(string);
+ int cursor = 0;
+ TokenSequence ts = new StringTokenization(input);
+ while (node != null) {
+ node = node.getNext();
+ if (node == null) break;
+ String[] f = node.getFeature().split(",");
+ if (f[0].equals("名詞") &&
+ !f[1].equals("数") && !f[1].equals("サ変接続") && !f[1].equals("接尾") ||
+ f[0].equals("未知語")) {
+ String surface = node.getSurface();
+ cursor = string.indexOf(surface, cursor);
+ ts.add (new StringSpan(input, cursor, cursor + surface.length()));
+ }
+ }
+ carrier.setData(ts);
+ return carrier;
+ }
+}
Added: trunk/dports/java/dualist/files/dualist
===================================================================
--- trunk/dports/java/dualist/files/dualist (rev 0)
+++ trunk/dports/java/dualist/files/dualist 2011-08-01 13:55:15 UTC (rev 81543)
@@ -0,0 +1,9 @@
+#!/bin/sh
+cmd="$1"
+if [ -z $cmd ]; then
+ cmd=run
+fi
+shift
+JAVA_HOME=@java_home@
+cd @prefix@/share/java/dualist
+ at prefix@/bin/play $cmd $@
Added: trunk/dports/java/dualist/files/dualist-mecab
===================================================================
--- trunk/dports/java/dualist/files/dualist-mecab (rev 0)
+++ trunk/dports/java/dualist/files/dualist-mecab 2011-08-01 13:55:15 UTC (rev 81543)
@@ -0,0 +1,9 @@
+#!/bin/sh
+cmd="$1"
+if [ -z $cmd ]; then
+ cmd=run
+fi
+shift
+JAVA_HOME=@java_home@
+cd @prefix@/share/java/dualist
+ at prefix@/bin/play $cmd -Ddualist.lang=ja -Djava.library.path=@prefix@/lib -Dfile.encoding=UTF-8 $@
Added: trunk/dports/java/dualist/files/patch-mecab.diff
===================================================================
--- trunk/dports/java/dualist/files/patch-mecab.diff (rev 0)
+++ trunk/dports/java/dualist/files/patch-mecab.diff 2011-08-01 13:55:15 UTC (rev 81543)
@@ -0,0 +1,21 @@
+--- app/guts/pipes/DocumentPipe.java.orig 2011-05-30 22:31:39.000000000 +0900
++++ app/guts/pipes/DocumentPipe.java 2011-06-30 22:46:50.000000000 +0900
+@@ -16,6 +16,8 @@
+ import cc.mallet.types.Instance;
+ import cc.mallet.util.CharSequenceLexer;
+
++import dualist.ja.SimpleMecabPipe;
++
+ public class DocumentPipe extends Pipe {
+
+ private Pipe myPipe = new SerialPipes(new Pipe[] {
+@@ -27,6 +29,9 @@
+ new CharSequenceReplace(Pattern.compile("&(.*?);"), ""),
+ new CharSequenceReplace(Pattern.compile("[0-9]+"), "00"),
+ new CharSequenceLowercase(),
++ (System.getProperty("dualist.lang") != null &&
++ System.getProperty("dualist.lang").equals("ja")) ?
++ new SimpleMecabPipe() :
+ new CharSequence2TokenSequence(CharSequenceLexer.LEX_WORD_CLASSES),
+ new TokenSequenceRemoveStopwords(),
+ new TokenSequence2FeatureSequence(),
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20110801/421f5e17/attachment-0001.html>
More information about the macports-changes
mailing list