galat****@lists*****
galat****@lists*****
2006年 10月 22日 (日) 14:48:18 JST
Index: chaone/pos_sys.xml diff -u /dev/null chaone/pos_sys.xml:1.1 --- /dev/null Sun Oct 22 14:48:18 2006 +++ chaone/pos_sys.xml Sun Oct 22 14:48:18 2006 @@ -0,0 +1,144 @@ +<psys> + <pos name="åè©"> + <pos name="åè©-æ®éåè©" add="-ä¸è¬"/> + <pos name="åè©-åºæåè©" add="-ä¸è¬"/> + <pos name="åè©-æ°è©" add="-ä¸è¬"/> + </pos> + <pos name="代åè©"/> + <pos name="å½¢ç¶è©" add="-ä¸è¬"/> + <pos name="é£ä½è©"/> + <pos name="å¯è©"/> + <pos name="æ¥ç¶è©"/> + <pos name="æåè©"/> + <pos name="åè©" add="-ä¸è¬"/> + <pos name="形容è©" add="-ä¸è¬"/> + <pos name="å©åè©"/> + <pos name="å©è©"> + <pos name="å©è©-æ ¼å©è©" add="-ä¸è¬"/> + <pos name="å©è©-å¯å©è©"/> + <pos name="å©è©-ä¿å©è©"/> + <pos name="å©è©-æ¥ç¶å©è©"/> + <pos name="å©è©-çµå©è©"/> + <pos name="å©è©-æºä½å©è©"/> + </pos> + <pos name="æ¥é è¾" add="-åè©æ¥ç¶-ä¸è¬"/> + <pos name="æ¥å°¾è¾"> + <pos name="æ¥å°¾è¾-åè©ç" add="-ä¸è¬"/> + <pos name="æ¥å°¾è¾-å½¢ç¶è©ç"/> + <pos name="æ¥å°¾è¾-åè©ç"/> + <pos name="æ¥å°¾è¾-形容è©ç"/> + </pos> + <pos name="è¨å·" add="-ä¸è¬"/> + <pos name="è£å©è¨å·" add="-ä¸è¬"/> + <ctype name="äºæ®µ"> + <ctype name="äºæ®µ-ã«è¡" add="-ä¸è¬-ä¸è¬"/> + <ctype name="äºæ®µ-ã¬è¡" add="-ä¸è¬"/> + <ctype name="äºæ®µ-ãµè¡"/> + <ctype name="äºæ®µ-ã¿è¡"/> + <ctype name="äºæ®µ-ãè¡"/> + <ctype name="äºæ®µ-ãè¡"/> + <ctype name="äºæ®µ-ãè¡" add="-ä¸è¬"/> + <ctype name="äºæ®µ-ã©è¡" add="-ä¸è¬"/> + <ctype name="äºæ®µ-ã¯ã¢è¡" add="-ã¢æ®µ-ä¸è¬"/> + </ctype> + <ctype name="ä¸ä¸æ®µ"> + <ctype name="ä¸ä¸æ®µ-ã¢è¡" add="-ä¸è¬"/> + <ctype name="ä¸ä¸æ®µ-ã«è¡"/> + <ctype name="ä¸ä¸æ®µ-ã¬è¡"/> + <ctype name="ä¸ä¸æ®µ-ã¶è¡"/> + <ctype name="ä¸ä¸æ®µ-ã¿è¡"/> + <ctype name="ä¸ä¸æ®µ-ãè¡"/> + <ctype name="ä¸ä¸æ®µ-ãè¡"/> + <ctype name="ä¸ä¸æ®µ-ãè¡"/> + <ctype name="ä¸ä¸æ®µ-ãè¡"/> + <ctype name="ä¸ä¸æ®µ-ã©è¡" add="-ä¸è¬"/> + </ctype> + <ctype name="ä¸ä¸æ®µ"> + <ctype name="ä¸ä¸æ®µ-ã¢è¡" add="-ä¸è¬"/> + <ctype name="ä¸ä¸æ®µ-ã«è¡"/> + <ctype name="ä¸ä¸æ®µ-ã¬è¡"/> + <ctype name="ä¸ä¸æ®µ-ãµè¡" add="-ä¸è¬"/> + <ctype name="ä¸ä¸æ®µ-ã¶è¡"/> + <ctype name="ä¸ä¸æ®µ-ã¿è¡"/> + <ctype name="ä¸ä¸æ®µ-ãè¡"/> + <ctype name="ä¸ä¸æ®µ-ãè¡"/> + <ctype name="ä¸ä¸æ®µ-ãè¡"/> + <ctype name="ä¸ä¸æ®µ-ãè¡"/> + <ctype name="ä¸ä¸æ®µ-ãè¡"/> + <ctype name="ä¸ä¸æ®µ-ã©è¡" add="-ä¸è¬"/> + </ctype> + <ctype name="ã«è¡å¤æ ¼" add="-ä¸è¬"/> + <ctype name="ãµè¡å¤æ ¼" add="-çºã«"/> + <ctype name="æèªå段"> + <ctype name="æèªå段-ã«è¡"/> + <ctype name="æèªå段-ã¬è¡"/> + <ctype name="æèªå段-ãµè¡"/> + <ctype name="æèªå段-ã¿è¡"/> + <ctype name="æèªå段-ãè¡" add="-ã¢æ®µ-ã«ã¦-ä¸è¬"/> + <ctype name="æèªå段-ãè¡"/> + <ctype name="æèªå段-ãè¡"/> + <ctype name="æèªå段-ã©è¡"/> + </ctype> + <ctype name="æèªä¸äºæ®µ"> + <ctype name="æèªä¸äºæ®µ-ã«è¡"/> + <ctype name="æèªä¸äºæ®µ-ã¬è¡"/> + <ctype name="æèªä¸äºæ®µ-ã¿è¡"/> + <ctype name="æèªä¸äºæ®µ-ãè¡"/> + <ctype name="æèªä¸äºæ®µ-ãè¡"/> + <ctype name="æèªä¸äºæ®µ-ãè¡"/> + <ctype name="æèªä¸äºæ®µ-ãè¡"/> + <ctype name="æèªä¸äºæ®µ-ã¤è¡"/> + <ctype name="æèªä¸äºæ®µ-ã©è¡"/> + </ctype> + <ctype name="æèªä¸äºæ®µ"> + <ctype name="æèªä¸äºæ®µ-ã¢è¡" add="-ä¸è¬"/> + <ctype name="æèªä¸äºæ®µ-ã«è¡"/> + <ctype name="æèªä¸äºæ®µ-ã¬è¡"/> + <ctype name="æèªä¸äºæ®µ-ãµè¡"/> + <ctype name="æèªä¸äºæ®µ-ã¶è¡"/> + <ctype name="æèªä¸äºæ®µ-ã¿è¡"/> + <ctype name="æèªä¸äºæ®µ-ãè¡" add="-ä¸è¬"/> + <ctype name="æèªä¸äºæ®µ-ãè¡" add="-ä¸è¬"/> + <ctype name="æèªä¸äºæ®µ-ãè¡" add="-ä¸è¬"/> + <ctype name="æèªä¸äºæ®µ-ãè¡"/> + <ctype name="æèªä¸äºæ®µ-ãè¡"/> + <ctype name="æèªä¸äºæ®µ-ã¤è¡"/> + <ctype name="æèªä¸äºæ®µ-ã©è¡"/> + <ctype name="æèªä¸äºæ®µ-ã¯è¡"/> + </ctype> + <ctype name="æèªã«è¡å¤æ ¼" add="-ä¸è¬"/> + <ctype name="æèªãµè¡å¤æ ¼" add="-ã¹"/> + <ctype name="æèªãè¡å¤æ ¼"/> + <ctype name="æèªã©è¡å¤æ ¼"/> + <ctype name="形容è©" add="-ã¢æ®µ-ã«ã¤-ä¸è¬"/> + <ctype name="æèªå½¢å®¹è©-ã¯"/> + <ctype name="æèªå½¢å®¹è©-ã·ã¯"/> + <ctype name="å©åè©" add="-ã¸ã£"/> + <ctype name="æèªå©åè©" add="-ã"/> + <cform name="èªå¹¹" add="-ä¸è¬"/> + <cform name="æªç¶å½¢"> + <cform name="æªç¶å½¢-ä¸è¬"/> + <cform name="æªç¶å½¢-æ¥é³ä¾¿"/> + </cform> + <cform name="æå¿æ¨éå½¢" add="-ä¸è¬"/> + <cform name="é£ç¨å½¢"> + <cform name="é£ç¨å½¢-ä¸è¬"/> + <cform name="é£ç¨å½¢-ã¤é³ä¾¿"/> + <cform name="é£ç¨å½¢-ã¦é³ä¾¿"/> + <cform name="é£ç¨å½¢-ä¿é³ä¾¿"/> + <cform name="é£ç¨å½¢-æ¥é³ä¾¿"/> + <cform name="é£ç¨å½¢-èå"/> + </cform> + <cform name="åºæ¬å½¢"> + <cform name="åºæ¬å½¢-ä¸è¬"/> + <cform name="åºæ¬å½¢-ä¿é³ä¾¿"/> + <cform name="åºæ¬å½¢-æ¥é³ä¾¿"/> + </cform> + <cform name="é£ä½å½¢" add="-ä¸è¬"/> + <cform name="ä»®å®å½¢"> + <cform name="ä»®å®å½¢-ä¸è¬"/> + <cform name="ä»®å®å½¢-èå"/> + </cform> + <cform name="å·²ç¶å½¢" add="-ä¸è¬"/> + <cform name="å½ä»¤å½¢" add="-ä¸è¬"/> +</psys> Index: chaone/postp.xsl diff -u /dev/null chaone/postp.xsl:1.1 --- /dev/null Sun Oct 22 14:48:18 2006 +++ chaone/postp.xsl Sun Oct 22 14:48:18 2006 @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="Shift_JIS"?> + +<!-- XSLT stylesheet for ChaOne --> +<!-- for msxml and exslt --> +<!-- ver. 1.3.0a2 --> +<!-- (4) postprocessing --> +<!-- 2006-10-20 by Studio ARC --> +<!-- Copyright (c) 2004-2006 Studio ARC --> + +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:msxml="urn:schemas-microsoft-com:xslt" + xmlns:ext="http://exslt.org/common" + exclude-result-prefixes="exsl msxml ext" + version="1.0" + xml:lang="ja"> + + <xsl:output method="xml" encoding="Shift_JIS" omit-xml-declaration="yes" indent="yes"/> + + <xsl:variable name="pos_sys" select="document('pos_sys.xml')"/> + <xsl:key name="r_pos" match="pos" use="@name"/> + <xsl:key name="r_cType" match="ctype" use="@name"/> + <xsl:key name="r_cForm" match="cform" use="@name"/> + + <xsl:template match="/"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="*"> + <xsl:copy> + <xsl:copy-of select="@*"/> + <xsl:apply-templates/> + </xsl:copy> + + </xsl:template> + + <xsl:template match="S"> + <xsl:copy> + <xsl:apply-templates mode="postp"/> + </xsl:copy> + + </xsl:template> + + <xsl:template match="*" mode="postp"> + <xsl:element name="{name()}"> + <xsl:for-each select="@*"> + <xsl:call-template name="reduce_psys_val"/> + </xsl:for-each> + <xsl:apply-templates mode="postp"/> + </xsl:element> + + </xsl:template> + + <xsl:template match="W1" mode="postp"> + <xsl:element name="{name()}"> + <xsl:for-each select="@*"> + <xsl:call-template name="reduce_psys_val"/> + </xsl:for-each> + </xsl:element> + + </xsl:template> + + <xsl:template name="reduce_psys_val"> + <!-- current() = */@* --> + <!-- return reduced value of the attribute --> + <xsl:attribute name="{name()}"> + <xsl:choose> + <xsl:when test="(name() = 'pos') or (name() = 'cType') or (name() = 'cForm')"> + <xsl:call-template name="calc_psys_val"> + <xsl:with-param name="pre" select="''"/> + <xsl:with-param name="org" select="."/> + <xsl:with-param name="mode" select="concat('r_', name())"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </xsl:template> + + <xsl:template name="calc_psys_val"> + <xsl:param name="pre"/> + <xsl:param name="org"/> + <xsl:param name="mode"/> + <xsl:variable name="head"> + <xsl:value-of select="$pre"/> + <xsl:call-template name="ext_head"> + <xsl:with-param name="str" select="$org"/> + <xsl:with-param name="delim" select="'-'"/> + </xsl:call-template> + </xsl:variable> + <xsl:for-each select="$pos_sys"> + <xsl:choose> + <xsl:when test="key($mode, $head)/child::*"> + <xsl:call-template name="calc_psys_val"> + <xsl:with-param name="pre" select="concat($head, '-')"/> + <xsl:with-param name="org" select="substring-after($org, '-')"/> + <xsl:with-param name="mode" select="$mode"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="key($mode, $head)"> + <xsl:value-of select="concat($head, key($mode, $head)/@add)"/> + </xsl:when> + <xsl:when test="string-length($pre) > 0"> + <xsl:value-of select="concat($pre, '-êÊ')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="'unk'"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:template> + + <xsl:template name="ext_head"> + <xsl:param name="str"/> + <xsl:param name="delim"/> + <xsl:choose> + <xsl:when test="contains($str, $delim)"> + <xsl:value-of select="substring-before($str, $delim)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$str"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + +</xsl:stylesheet> Index: chaone/chaone_t_main.xsl diff -u chaone/chaone_t_main.xsl:1.2 chaone/chaone_t_main.xsl:1.3 --- chaone/chaone_t_main.xsl:1.2 Sun Oct 22 14:42:02 2006 +++ chaone/chaone_t_main.xsl Sun Oct 22 14:48:18 2006 @@ -2,14 +2,15 @@ <!-- XSLT stylesheet for ChaOne --> <!-- for msxml and exslt --> -<!-- ver. 1.3.0a1 --> +<!-- ver. 1.3.0a2 --> <!-- for UniDic 1.2.0 --> <!-- ChaOne consists of the followings; --> <!-- (0) preprocessing --> <!-- (1) ChaSen Chunker --> <!-- (2) Phonetic Alternation --> <!-- (3) Accent Combination --> -<!-- 2006-10-12 by Studio ARC --> +<!-- (4) postprocessing --> +<!-- 2006-10-20 by Studio ARC --> <!-- Copyright (c) 2004-2006 Studio ARC --> <!-- This program is based on the product --> @@ -38,8 +39,9 @@ <xsl:import href="chunker.xsl"/> <xsl:import href="phonetic.xsl"/> <xsl:import href="accent.xsl"/> + <xsl:import href="postp.xsl"/> - <xsl:output method="xml" encoding="EUC-JP" omit-xml-declaration="yes" indent="yes"/> + <xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="yes"/> <xsl:param name="standalone"/> <xsl:param name="debug"/> @@ -59,6 +61,10 @@ <xsl:variable name="ap_rule" select="document('ap_rule.xml')/ap_rule/rule"/> <xsl:variable name="accent_rule" select="document('accent_rule.xml')/aType_rule/rule"/> <xsl:variable name="kannjiyomi" select="document('kannjiyomi.xml')/kannjiyomi/char"/> + <xsl:variable name="pos_sys" select="document('pos_sys.xml')"/> + <xsl:key name="rpos" match="pos" use="@name"/> + <xsl:key name="rctype" match="ctype" use="@name"/> + <xsl:key name="rcform" match="cform" use="@name"/> <xsl:template match="/"> <xsl:if test="$debug"> @@ -98,6 +104,9 @@ <xsl:with-param name="stack" select="0"/> </xsl:apply-templates> </xsl:when> + <xsl:when test="$standalone = 'ppstp'"> + <xsl:apply-templates mode="postp"/> + </xsl:when> <xsl:otherwise> <xsl:variable name="preps"> <preps> @@ -134,9 +143,12 @@ <xsl:variable name="ws"> <xsl:apply-templates select="ext:node-set($pa)/*" mode="preap"/> </xsl:variable> - <xsl:apply-templates select="ext:node-set($ws)/*[1]" mode="mainap"> - <xsl:with-param name="stack" select="0"/> - </xsl:apply-templates> + <xsl:variable name="ap"> + <xsl:apply-templates select="ext:node-set($ws)/*[1]" mode="mainap"> + <xsl:with-param name="stack" select="0"/> + </xsl:apply-templates> + </xsl:variable> + <xsl:apply-templates select="ext:node-set($ap)" mode="postp"/> </xsl:otherwise> </xsl:choose> </xsl:copy>