<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wikis.swarthmore.edu/ling073/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lchien1</id>
		<title>LING073 - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wikis.swarthmore.edu/ling073/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lchien1"/>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/Special:Contributions/Lchien1"/>
		<updated>2026-10-25T03:10:41Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.7</generator>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22226</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22226"/>
				<updated>2023-05-06T03:14:03Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* What I Did */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copy of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
My analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST. However, the coverage analysis for HFST is complex in how it treats individual tokens and what qualifies as a token (numbers? punctuation?). Therefore, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. Therefore, the time complexity is O(n) by the number of words in the corpus.&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt (9.4kb)&lt;br /&gt;
**Coverage: 62/510 unique forms&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 58.9 megabytes&lt;br /&gt;
*For ami.corpus.large.txt (80.7kb)&lt;br /&gt;
**Coverage: 235/2925&lt;br /&gt;
**Time: 1.3 seconds&lt;br /&gt;
**Memory: 59.4 megabytes&lt;br /&gt;
*For ami.wiki.20230320.txt (2.93 MB)&lt;br /&gt;
**Coverage: 597/50245&lt;br /&gt;
**Time: 22.5 seconds&lt;br /&gt;
**Memory: 217.9 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 cat ../ling073-ami-corpus/ami.corpus.basic.txt | /usr/bin/time apertium -d . ami-morph &lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt (9.4kb)&lt;br /&gt;
**Average time to compile: 0.33 seconds &lt;br /&gt;
**Memory Required: 12.9 megabytes&lt;br /&gt;
*For ami.corpus.large.txt (80.7kb)&lt;br /&gt;
**Time: 0.32 seconds&lt;br /&gt;
**Memory: 13.3 megabytes&lt;br /&gt;
*For ami.wiki.20230320.txt (2.93 MB)&lt;br /&gt;
**Coverage: 597/50245&lt;br /&gt;
**Time: 1.58 seconds&lt;br /&gt;
**Memory: 13.1 megabytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Coverage is not calculated the same way for these two analysers. However, because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other. Because the Python program stores the entire dictionary of forms for searching, it is both memory inefficient and slower. The time complexity for HFST is O(n) based on the number of letters it has to build. The Python analyzer stores whole forms and searches them, so it is O(n) based on the number of words. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22185</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22185"/>
				<updated>2023-05-05T20:19:24Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Efficiency of Python Analyser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
My analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST. However, the coverage analysis for HFST is complex in how it treats individual tokens and what qualifies as a token (numbers? punctuation?). Therefore, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. Therefore, the time complexity is O(n) by the number of words in the corpus.&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt (9.4kb)&lt;br /&gt;
**Coverage: 62/510 unique forms&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 58.9 megabytes&lt;br /&gt;
*For ami.corpus.large.txt (80.7kb)&lt;br /&gt;
**Coverage: 235/2925&lt;br /&gt;
**Time: 1.3 seconds&lt;br /&gt;
**Memory: 59.4 megabytes&lt;br /&gt;
*For ami.wiki.20230320.txt (2.93 MB)&lt;br /&gt;
**Coverage: 597/50245&lt;br /&gt;
**Time: 22.5 seconds&lt;br /&gt;
**Memory: 217.9 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 cat ../ling073-ami-corpus/ami.corpus.basic.txt | /usr/bin/time apertium -d . ami-morph &lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt (9.4kb)&lt;br /&gt;
**Average time to compile: 0.33 seconds &lt;br /&gt;
**Memory Required: 12.9 megabytes&lt;br /&gt;
*For ami.corpus.large.txt (80.7kb)&lt;br /&gt;
**Time: 0.32 seconds&lt;br /&gt;
**Memory: 13.3 megabytes&lt;br /&gt;
*For ami.wiki.20230320.txt (2.93 MB)&lt;br /&gt;
**Coverage: 597/50245&lt;br /&gt;
**Time: 1.58 seconds&lt;br /&gt;
**Memory: 13.1 megabytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Coverage is not calculated the same way for these two analysers. However, because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other. Because the Python program stores the entire dictionary of forms for searching, it is both memory inefficient and slower. The time complexity for HFST is O(n) based on the number of letters it has to build. The Python analyzer stores whole forms and searches them, so it is O(n) based on the number of words. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22184</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22184"/>
				<updated>2023-05-05T20:18:43Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Efficiency of Prior HFST Analyser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
My analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST. However, the coverage analysis for HFST is complex in how it treats individual tokens and what qualifies as a token (numbers? punctuation?). Therefore, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. Therefore, the time complexity is O(n) by the number of words in the corpus.&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt (9.4kb)&lt;br /&gt;
**Coverage: 62/510 unique forms&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 58.9 megabytes&lt;br /&gt;
*For ami.corpus.large.txt (80.7kb)&lt;br /&gt;
**Coverage: 235/2925&lt;br /&gt;
**Time: 1.3 seconds&lt;br /&gt;
**Memory: 63.1 megabytes&lt;br /&gt;
*For ami.wiki.20230320.txt (2.93 MB)&lt;br /&gt;
**Coverage: 597/50245&lt;br /&gt;
**Time: 22.5 seconds&lt;br /&gt;
**Memory: 217.9 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 cat ../ling073-ami-corpus/ami.corpus.basic.txt | /usr/bin/time apertium -d . ami-morph &lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt (9.4kb)&lt;br /&gt;
**Average time to compile: 0.33 seconds &lt;br /&gt;
**Memory Required: 12.9 megabytes&lt;br /&gt;
*For ami.corpus.large.txt (80.7kb)&lt;br /&gt;
**Time: 0.32 seconds&lt;br /&gt;
**Memory: 13.3 megabytes&lt;br /&gt;
*For ami.wiki.20230320.txt (2.93 MB)&lt;br /&gt;
**Coverage: 597/50245&lt;br /&gt;
**Time: 1.58 seconds&lt;br /&gt;
**Memory: 13.1 megabytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Coverage is not calculated the same way for these two analysers. However, because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other. Because the Python program stores the entire dictionary of forms for searching, it is both memory inefficient and slower. The time complexity for HFST is O(n) based on the number of letters it has to build. The Python analyzer stores whole forms and searches them, so it is O(n) based on the number of words. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22183</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22183"/>
				<updated>2023-05-05T20:17:06Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
My analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST. However, the coverage analysis for HFST is complex in how it treats individual tokens and what qualifies as a token (numbers? punctuation?). Therefore, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. Therefore, the time complexity is O(n) by the number of words in the corpus.&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt (9.4kb)&lt;br /&gt;
**Coverage: 62/510 unique forms&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 58.9 megabytes&lt;br /&gt;
*For ami.corpus.large.txt (80.7kb)&lt;br /&gt;
**Coverage: 235/2925&lt;br /&gt;
**Time: 1.3 seconds&lt;br /&gt;
**Memory: 63.1 megabytes&lt;br /&gt;
*For ami.wiki.20230320.txt (2.93 MB)&lt;br /&gt;
**Coverage: 597/50245&lt;br /&gt;
**Time: 22.5 seconds&lt;br /&gt;
**Memory: 217.9 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt (9.4kb)&lt;br /&gt;
**Average time to compile: 0.33 seconds &lt;br /&gt;
**Memory Required: 12.9 megabytes&lt;br /&gt;
*For ami.corpus.large.txt (80.7kb)&lt;br /&gt;
**Time: 0.32 seconds&lt;br /&gt;
**Memory: 13.3 megabytes&lt;br /&gt;
*For ami.wiki.20230320.txt (2.93 MB)&lt;br /&gt;
**Coverage: 597/50245&lt;br /&gt;
**Time: 1.58 seconds&lt;br /&gt;
**Memory: 13.1 megabytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Coverage is not calculated the same way for these two analysers. However, because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other. Because the Python program stores the entire dictionary of forms for searching, it is both memory inefficient and slower. The time complexity for HFST is O(n) based on the number of letters it has to build. The Python analyzer stores whole forms and searches them, so it is O(n) based on the number of words. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22160</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22160"/>
				<updated>2023-05-05T04:37:38Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Comparison */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. Therefore, the time complexity is O(n) by the number of words in the corpus.&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Coverage: 62/510 unique forms&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 62.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Average time to compile: 0.59 seconds &lt;br /&gt;
**Memory Required: 11.2 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Coverage is not calculated the same way for these two analysers. However, because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other. Because the Python program stores the entire dictionary of forms for searching, it is memory inefficient. It turns out, though, that the Python transducer performed better in terms of speed for searching. The time complexity for HFST is O(n) based on the number of letters it has to build. The Python analyzer stores whole forms and searches them, so it is O(n) based on the number of words. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22159</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22159"/>
				<updated>2023-05-05T04:32:23Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Efficiency of Python Analyser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. Therefore, the time complexity is O(n) by the number of words in the corpus.&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Coverage: 62/510 unique forms&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 62.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Average time to compile: 0.59 seconds &lt;br /&gt;
**Memory Required: 11.2 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22158</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22158"/>
				<updated>2023-05-05T04:31:50Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. Therefore, the time complexity is O(n) by the number of words in the corpus.&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Coverage: 62/510&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 62.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Average time to compile: 0.59 seconds &lt;br /&gt;
**Memory Required: 11.2 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22157</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22157"/>
				<updated>2023-05-05T04:29:29Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Efficiency of Prior HFST Analyser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 62.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Average time to compile: 0.59 seconds &lt;br /&gt;
**Memory Required: 11.2 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22156</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22156"/>
				<updated>2023-05-05T04:29:08Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: Undo revision 22155 by Lchien1 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 62.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
**Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22155</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22155"/>
				<updated>2023-05-05T04:27:56Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Efficiency of Prior HFST Analyser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 62.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Average time to compile: 0.59 seconds &lt;br /&gt;
**Memory Required: 11.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22154</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22154"/>
				<updated>2023-05-05T04:27:28Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* For ami.corpus.basic.txt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 62.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
**Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22153</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22153"/>
				<updated>2023-05-05T04:27:11Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* For ami.corpus.basic.txt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
*For ami.corpus.basic.txt&lt;br /&gt;
**Time to compile: 0.2 seconds&lt;br /&gt;
**Memory Required: 62.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
====For ami.corpus.basic.txt====&lt;br /&gt;
*Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
*Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22152</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22152"/>
				<updated>2023-05-05T04:26:46Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Efficiency of Python Analyser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
====For ami.corpus.basic.txt====&lt;br /&gt;
*Time to compile: 0.2 seconds&lt;br /&gt;
*Memory Required: 62.2 megabytes&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
====For ami.corpus.basic.txt====&lt;br /&gt;
*Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
*Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22151</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22151"/>
				<updated>2023-05-05T04:25:42Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Efficiency of Prior HFST Analyser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
====For ami.corpus.basic.txt====&lt;br /&gt;
*Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
*Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22150</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22150"/>
				<updated>2023-05-05T04:04:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
To test efficiency, I used the built in time and resource libraries.&lt;br /&gt;
&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
&lt;br /&gt;
*Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22149</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22149"/>
				<updated>2023-05-05T03:58:36Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. Then, the program reads the dictionary of forms from a .csv file that was created by previously by ami_analyser.py. The program iterates through the set and looks up the analysis for each word. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
&lt;br /&gt;
*Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22148</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22148"/>
				<updated>2023-05-05T03:54:58Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the corpus (which is a text file) and stores them in a set (you can read about sets here: https://www.digitalocean.com/community/tutorials/python-set). A set here is preferable to using a list because sets store unique values, and we do not want the program to look up the analysis of a form more than once. &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
&lt;br /&gt;
*Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22147</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22147"/>
				<updated>2023-05-05T03:49:13Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Efficiency of Prior HFST Analyser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
*Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
&lt;br /&gt;
*Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22146</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22146"/>
				<updated>2023-05-05T03:47:21Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
Because my analyser uses for the most part, the same Amis morphemes and patterns that we implemented before using HFST, comparing their coverage is trivial. However, it is still useful to evaluate coverage over a corpus as a sanity check. &lt;br /&gt;
&lt;br /&gt;
The Amis corpus can be found at: https://github.swarthmore.edu/Ling073-sp23/ling073-ami-corpus&lt;br /&gt;
&lt;br /&gt;
To check coverage over a corpus, I created a new Python program called analyze_corpus.py. The program reads the words from the &lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
&lt;br /&gt;
Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22132</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22132"/>
				<updated>2023-05-04T19:22:23Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Efficiency of Prior HFST Analyser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
Average time to compile: 0.59 seconds (minimum 0.54 seconds, maximum 0.61 seconds) &lt;br /&gt;
&lt;br /&gt;
Memory Required: 11219 kilobytes&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22128</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22128"/>
				<updated>2023-05-04T19:15:47Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
To test, use:&lt;br /&gt;
 /usr/bin/time coverage-hfst ../ling073-ami-corpus/ami.corpus.basic.txt ami.automorf.hfst&lt;br /&gt;
&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22123</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22123"/>
				<updated>2023-05-04T18:50:45Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* What I Did */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. After taking CS21 Introduction to Computer Science last year, I wanted to challenge myself to tackle a complex coding problem and devote myself to improving my Python skills. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22122</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22122"/>
				<updated>2023-05-04T18:49:10Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* What I Did */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, a threatened Austronesian language indigenous to Taiwan that I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22121</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22121"/>
				<updated>2023-05-04T18:44:56Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* What I Did */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, the language I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in our lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22119</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22119"/>
				<updated>2023-05-04T18:41:46Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, the language I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Comparison===&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22118</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22118"/>
				<updated>2023-05-04T18:41:22Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, the language I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22117</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22117"/>
				<updated>2023-05-04T18:41:03Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, the language I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Python Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
===Efficiency of Prior HFST Analyser===&lt;br /&gt;
Time to compile:&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22116</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22116"/>
				<updated>2023-05-04T18:40:47Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, the language I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
The complete output of my analyser can be found in the same github repository, at: https://github.com/lchien1/chien-ami-analysis/blob/main/output/output.txt&lt;br /&gt;
&lt;br /&gt;
==Efficiency of Python Analyser==&lt;br /&gt;
Time to compile:&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
==Efficiency of Prior HFST Analyser==&lt;br /&gt;
Time to compile:&lt;br /&gt;
Memory Required:&lt;br /&gt;
&lt;br /&gt;
Because these two transducers contain mostly the same library of morphemes and similar patterns, it makes sense to compare the efficiency of each against the other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22073</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22073"/>
				<updated>2023-05-04T07:28:59Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Links to my Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, the language I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
My code, as well as all of the data mentioned above can be found in the following Github repository:&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22072</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22072"/>
				<updated>2023-05-04T07:27:02Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* What I Did */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, the language I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
 forms = [all of the roots]&lt;br /&gt;
 options = [several dictionary keys]&lt;br /&gt;
 for each option{&lt;br /&gt;
     for each form{&lt;br /&gt;
         append to forms: a copies of the form with options attached&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
The innermost loop adds more items to the list of forms, so the number of iterations of the outermost loop dynamically increases.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22071</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22071"/>
				<updated>2023-05-04T07:16:46Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* What I Did */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, the language I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in lexd file look something like this: &lt;br /&gt;
 aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
 isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
 ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
 ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
 ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
 amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
 angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
Each line has multiple instances of the morpheme, several tags, and sometimes even comments. This is unfortunately not so useful for me. I need to be able to identify the actual Amis roots, the tags, and get rid of any comments. I wrote a Python program, text_formatter.py, which takes care of this for me. The resulting text looks something like this:&lt;br /&gt;
 aku,pers,sg,p1&lt;br /&gt;
 isu,pers,sg,p2&lt;br /&gt;
 ingra,pers,sg,p3&lt;br /&gt;
 ira,pers,sg,p3&lt;br /&gt;
 ita,pers,pl,p1,incl&lt;br /&gt;
 ami,pers,pl,p1,excl&lt;br /&gt;
 amu,pers,pl,p2&lt;br /&gt;
 angra,pers,pl,p3&lt;br /&gt;
We&amp;#039;ve gotten rid of any extra white space, extra characters, comments, and we ended up with a more predictable format where it is clear that the Amis text comes first, followed by comma separated tags. This format will be much easier to use to populate a Python data structure. &lt;br /&gt;
&lt;br /&gt;
Next, I created a data structure in Python that would be able to organize this text. My data structure separately stores the bit of Amis at the front, a list of tags, and it keeps track of the root so we can add prefixes and suffixes. I stored several lists of these data structures as variables in a dictionary, with the keys being category of morphemes, such as noun roots, verb tenses, or case markers. Finally, I implemented patterns to stitch morphemes together, while also concatenating any associated tags. The basic architecture of a pattern is as follows:&lt;br /&gt;
#List the desired roots on their own. &lt;br /&gt;
#Identify which types of morphemes are optional and compile a list of them. &lt;br /&gt;
#For each of these options, append to all items in the first list a copy of itself with the new morpheme attached.&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22070</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22070"/>
				<updated>2023-05-04T06:51:37Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* What I Did */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
Throughout this semester, I was introduced to several tools we used in class to develop language technologies like hfst, lexd, and Apertium. I did not understand what was happening behind the simple files we created in class and how they were converted to output, and using them felt difficult or not intuitive. I decided to use Python to build my own analyser for Amis, the language I worked with all semester long. By building a tool myself in Python, I have full control over all parts of the tool and its functionality.&lt;br /&gt;
&lt;br /&gt;
I wanted a program that, like the .lexd file I created earlier in the semester, would use Amis grammar patterns to put together morphemes to form words and show tags. &lt;br /&gt;
&lt;br /&gt;
The first step was to assemble a list of morphemes. Luckily, our lexd file already had lots of morphemes listed out for me to use. Entries in lexd file look something like this: &lt;br /&gt;
&lt;br /&gt;
aku:aku     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p1&amp;gt;:&lt;br /&gt;
isu:isu     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
ingra:ingra &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
ira:ira     &amp;lt;pers&amp;gt;&amp;lt;sg&amp;gt;&amp;lt;p3&amp;gt;: # Possible fix to pronoun spelling issue&lt;br /&gt;
ita:ita     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;incl&amp;gt;:&lt;br /&gt;
ami:ami     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;excl&amp;gt;:&lt;br /&gt;
amu:amu     &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;:&lt;br /&gt;
angra:angra &amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p3&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22069</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22069"/>
				<updated>2023-05-04T06:12:20Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Links to my Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
https://github.com/lchien1/chien-ami-analysis&lt;br /&gt;
&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22068</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22068"/>
				<updated>2023-05-04T06:10:39Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What I Did=&lt;br /&gt;
=Links to my Code=&lt;br /&gt;
=Results=&lt;br /&gt;
&lt;br /&gt;
[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22067</id>
		<title>User:Lchien1/Final project</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=User:Lchien1/Final_project&amp;diff=22067"/>
				<updated>2023-05-04T06:09:38Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: Created page with &amp;quot;Category:sp23_FinalProjects&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:sp23_FinalProjects]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21401</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21401"/>
				<updated>2023-04-20T15:12:22Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Ergative Constructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Possessives==&lt;br /&gt;
Possessive relationships are denoted by the use of the word &amp;#039;&amp;#039;aku&amp;#039;&amp;#039; when immediately following a noun marker.&lt;br /&gt;
&lt;br /&gt;
* Fangcal ku wawa aku.(ami) --&amp;gt; My child is good. (eng)&lt;br /&gt;
*Tata’ak ku ʼayam aku. (ami) --&amp;gt; My chicken is big. (eng)&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Ergative Constructions==&lt;br /&gt;
Ergative constructions (describing a change of state) in Amis come in the order: verb, agent, subject.&lt;br /&gt;
* (ami) Ruhemen aku ku pawli. → (eng) I will ripen this banana.&lt;br /&gt;
* (ami) Macangcang nira ku sinabel. → (eng) She warmed up the dish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21399</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21399"/>
				<updated>2023-04-20T15:12:06Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Ergative Constructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Possessives==&lt;br /&gt;
Possessive relationships are denoted by the use of the word &amp;#039;&amp;#039;aku&amp;#039;&amp;#039; when immediately following a noun marker.&lt;br /&gt;
&lt;br /&gt;
* Fangcal ku wawa aku.(ami) --&amp;gt; My child is good. (eng)&lt;br /&gt;
*Tata’ak ku ʼayam aku. (ami) --&amp;gt; My chicken is big. (eng)&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Ergative Constructions==&lt;br /&gt;
Ergative constructions (describing a change of state) in Amis come in the order: verb, agent, subject.&lt;br /&gt;
* (ami) Ruhemen aku ku pawli.→ (eng) I will ripen this banana.&lt;br /&gt;
* (ami) Macangcang nira ku sinabel. →(eng) She warmed up the dish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21396</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21396"/>
				<updated>2023-04-20T15:11:50Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Possessives==&lt;br /&gt;
Possessive relationships are denoted by a&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Ergative Constructions==&lt;br /&gt;
Ergative constructions (describing a change of state) in Amis come in the order: verb, agent, subject.&lt;br /&gt;
* (ami) Ruhemen aku ku pawli.--&amp;gt; (eng) I will ripen this banana.&lt;br /&gt;
* (ami) Macangcang nira ku sinabel. --&amp;gt;(eng) She warmed up the dish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21394</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21394"/>
				<updated>2023-04-20T15:11:16Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Ergative Constructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Possessives==&lt;br /&gt;
Possessive relationships are denoted by a&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Ergative Constructions==&lt;br /&gt;
Ergative constructions (describing a change of state) in Amis come in the order: verb, agent, subject.&lt;br /&gt;
* (ami) Ruhemen aku ku pawli.--&amp;gt; (eng) I will ripen this banana.&lt;br /&gt;
* (ami) Macangcang nira ku sinabel. --&amp;gt; (eng) She warmed up the dish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21391</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21391"/>
				<updated>2023-04-20T15:09:43Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: /* Ergative Constructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Possessives==&lt;br /&gt;
Possessive relationships are denoted by a&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Ergative Constructions==&lt;br /&gt;
Ergative constructions (describing a change of state) in Amis come in the order: verb, agent, subject.&lt;br /&gt;
* Ruhemen aku ku pawli.|I will ripen this banana.&lt;br /&gt;
* Macangcang nira ku sinabel.|She warmed up the dish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21389</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21389"/>
				<updated>2023-04-20T15:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Possessives==&lt;br /&gt;
Possessive relationships are denoted by a&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Ergative Constructions==&lt;br /&gt;
Ergative constructions (describing a change of state) come in the order: verb, agent, subject.&lt;br /&gt;
* Ruhemen aku ku pawli.|I will ripen this banana.&lt;br /&gt;
* Macangcang nira ku sinabel.|She warmed up the dish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21386</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21386"/>
				<updated>2023-04-20T15:08:28Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Possessives==&lt;br /&gt;
Possessive relationships are denoted by a&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Example 5==&lt;br /&gt;
Ergative constructions (describing a change of state) come in the order: verb, agent, subject.&lt;br /&gt;
* Ruhemen aku ku pawli.|I will ripen this banana.&lt;br /&gt;
* Macangcang nira ku sinabel.|She warmed up the dish.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21363</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21363"/>
				<updated>2023-04-20T14:54:41Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adjectives==&lt;br /&gt;
Adjectives appear after the nouns they modify.&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Example 5==&lt;br /&gt;
Ergative constructions (describing a change of state) come in the order: verb, agent, subject.&lt;br /&gt;
* {{transferTest|ami|eng|Ruhemen aku ku pawli.|I will ripen this banana.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21355</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21355"/>
				<updated>2023-04-20T14:51:46Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adjectives==&lt;br /&gt;
Adjectives appear after the nouns they modify.&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Example 5==&lt;br /&gt;
Ergative constructions (describing a change of state) come in the order: verb, agent, subject.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21354</id>
		<title>Amis and English/Contrastive Grammar</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis_and_English/Contrastive_Grammar&amp;diff=21354"/>
				<updated>2023-04-20T14:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Word Order==&lt;br /&gt;
In Amis sentences the verb must come before nouns.&lt;br /&gt;
* {{transferTest|ami|eng|Minanuy kaku tu safa.|I am swinging a younger sibling.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|nanoy{{tag|v}}{{tag|av}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} safa{{tag|n}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p1}}{{tag|sg}} [swing{{tag|vblex}}{{tag|}}] a{{tag|det}}{{tag|ind}}{{tag|sg}} young{{tag|adj}}{{tag|sint}}{{tag|comp}} sibling{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^swinging/swinging&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/swing&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Maulah kaku tu pusong.|I like Taitung.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|ulah{{tag|v}}{{tag|uv}}{{tag|prst}} aku{{tag|prn}}{{tag|pers}}{{tag|sg}}{{tag|p1}}{{tag|nom}} u{{tag|nm}}{{tag|um}}{{tag|dat}} pusong{{tag|np}}{{tag|top}}|I{{tag|prn}}{{tag|subj}}{{tag|p1}}{{tag|mf}}{{tag|sg}} like{{tag|vblex}}[{{tag|pres}} or {{tag|imp}}] Taitung{{tag|np}}{{tag|top}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
==Noun Markers==&lt;br /&gt;
Subject and object marked by noun marker in Amis.&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Milaʼup ku wacu tu wawa ni Panay.|The dog is chasing Panay&amp;#039;s child.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|av}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|dat}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|pres}}{{tag|p3}}{{tag|sg}}  [chase{{tag|vblex}}{{tag|}}] Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^The/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^is/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chasing/chase&amp;lt;vblex&amp;gt;&amp;lt;pprs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;subs&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;ger&amp;gt;$ ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{transferTest|ami|eng|Malaʼup nu wacu ku wawa ni Panay.|Panay&amp;#039;s child was chased by the dog.}}&lt;br /&gt;
*: {{transferMorphTest|ami|eng|laʼop{{tag|v}}{{tag|uv}}{{tag|prst}} u{{tag|nm}}{{tag|um}}{{tag|gen}} wacu{{tag|n}} u{{tag|nm}}{{tag|um}}{{tag|nom}} wawa{{tag|n}} i{{tag|nm}}{{tag|sg}}{{tag|gen}} Panay{{tag|np}}{{tag|ant}}|Panay{{tag|np}}{{tag|ant}}{{tag|sg}}+have{{tag|vbhaver}}{{tag|pres}}{{tag|p3}}{{tag|sg}} child{{tag|n}}{{tag|sg}} be{{tag|vbser}}{{tag|past}}{{tag|p3}}{{tag|sg}} chase{{tag|vbser}}{{tag|pp}} by{{tag|pr}} the{{tag|det}}{{tag|def}}{{tag|sp}} dog{{tag|n}}{{tag|sg}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ^panay/*panay$^&amp;#039;s/&amp;#039;s&amp;lt;gen&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;/have&amp;lt;vbhaver&amp;gt;&amp;lt;pres&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^child/child&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ ^was/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p1&amp;gt;&amp;lt;sg&amp;gt;/be&amp;lt;vbser&amp;gt;&amp;lt;past&amp;gt;&amp;lt;p3&amp;gt;&amp;lt;sg&amp;gt;$ ^chased/chase&amp;lt;vblex&amp;gt;&amp;lt;past&amp;gt;/chase&amp;lt;vblex&amp;gt;&amp;lt;pp&amp;gt;$ ^by/by&amp;lt;adv&amp;gt;/by&amp;lt;pr&amp;gt;$ ^the/the&amp;lt;det&amp;gt;&amp;lt;def&amp;gt;&amp;lt;sp&amp;gt;$ ^dog/dog&amp;lt;n&amp;gt;&amp;lt;sg&amp;gt;$ --&amp;gt;&lt;br /&gt;
&amp;lt;!-- this second one somewhat feels passive... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adjectives==&lt;br /&gt;
Adjectives appear after the nouns they modify.&lt;br /&gt;
&lt;br /&gt;
==Transitive Verbs==&lt;br /&gt;
The subject and object of the verb appear after it in a subject-object word order.&lt;br /&gt;
&lt;br /&gt;
==Example 5==&lt;br /&gt;
Ergative constructions (describing a change of state) come in the verb, agent, subject.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Sp23_ContrastiveGrammars]] [[Category:Amis]] [[Category:English]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20646</id>
		<title>Amis/Disambiguation</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20646"/>
				<updated>2023-03-30T13:58:55Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ling073-ami github: https://github.swarthmore.edu/Ling073-sp23/ling073-ami&lt;br /&gt;
&lt;br /&gt;
==initial evaluation of ambiguity==&lt;br /&gt;
to remove weird characters from tests, run command line measurements with options like this:  &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | wc -l&lt;br /&gt;
&lt;br /&gt;
ex., to get all of the ambiguous analyses do: &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | grep &amp;#039;\/.*\/&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The ambiguity of a corpus is the average number of analyses provided per token. Our initial ambiguity is 2066/1941 = 1.064&lt;br /&gt;
&lt;br /&gt;
The number of all forms is 6283.&lt;br /&gt;
The number of unique forms is 6273.&lt;br /&gt;
&lt;br /&gt;
The comparison: &amp;lt;br&amp;gt;&lt;br /&gt;
40,41d39 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ako &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; aku &amp;lt;br&amp;gt;&lt;br /&gt;
68d65 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; iso &amp;lt;br&amp;gt;&lt;br /&gt;
70,71d66 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; isu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ita &amp;lt;br&amp;gt;&lt;br /&gt;
4827,4828d4821 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nami &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namo &amp;lt;br&amp;gt;&lt;br /&gt;
4831,4832d4823 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nangra &amp;lt;br&amp;gt;&lt;br /&gt;
5020d5010 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ningra &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sentences==&lt;br /&gt;
For genitive vs. possessive disambiguation.&lt;br /&gt;
Possessive only appears directly after noun marker ({{tag|nm}}).&lt;br /&gt;
&lt;br /&gt;
* Ulahen namu ku ina namu. (genitive) https://shs.hal.science/halshs-03483275 (p. 39)&lt;br /&gt;
* Ngaʼay ho ku namu? (Posessive) Wu Dissertation p.86.&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Ulahen namu ku ina namu&amp;quot; | apertium -d. ami-morph &amp;lt;br&amp;gt;&lt;br /&gt;
^Ulahen/ulah&amp;lt;v&amp;gt;&amp;lt;uv&amp;gt;&amp;lt;futi&amp;gt;$ ^namu/&amp;#039;&amp;#039;&amp;#039;amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;&amp;#039;&amp;#039;&amp;#039;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$ ^ku/u&amp;lt;nm&amp;gt;&amp;lt;un&amp;gt;&amp;lt;nom&amp;gt;$ ^ina/ina&amp;lt;n&amp;gt;$ ^namu/&amp;#039;&amp;#039;&amp;#039;amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;&amp;#039;&amp;#039;&amp;#039;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Ngaʼay ho ku namu&amp;quot; | apertium -d. ami-morph &amp;lt;br&amp;gt;&lt;br /&gt;
^Ngaʼay/ngaʼay&amp;lt;adj&amp;gt;$ ^ho/ho&amp;lt;asp&amp;gt;&amp;lt;impf&amp;gt;$ ^ku/u&amp;lt;nm&amp;gt;&amp;lt;un&amp;gt;&amp;lt;nom&amp;gt;$ ^namu/&amp;#039;&amp;#039;&amp;#039;amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;&amp;#039;&amp;#039;&amp;#039;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;$&lt;br /&gt;
&lt;br /&gt;
==final evaluation of ambiguity==&lt;br /&gt;
The number of tokens is 2114. The total number of analyses is 2239. The ambiguity is 2239/2114 = 1.059&lt;br /&gt;
&lt;br /&gt;
[[Category:Amis]][[Category:Sp23_Disambiguation]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20545</id>
		<title>Amis/Disambiguation</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20545"/>
				<updated>2023-03-21T19:40:58Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==initial evaluation of ambiguity==&lt;br /&gt;
to remove weird characters from tests, run command line measurements with options like this:  &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | wc -l&lt;br /&gt;
&lt;br /&gt;
ex., to get all of the ambiguous analyses do: &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | grep &amp;#039;\/.*\/&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The ambiguity of a corpus is the average number of analyses provided per token. Our initial ambiguity is 2066/1941 = 1.064&lt;br /&gt;
&lt;br /&gt;
The number of all forms is 6283.&lt;br /&gt;
The number of unique forms is 6273.&lt;br /&gt;
&lt;br /&gt;
The comparison: &amp;lt;br&amp;gt;&lt;br /&gt;
40,41d39 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ako &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; aku &amp;lt;br&amp;gt;&lt;br /&gt;
68d65 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; iso &amp;lt;br&amp;gt;&lt;br /&gt;
70,71d66 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; isu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ita &amp;lt;br&amp;gt;&lt;br /&gt;
4827,4828d4821 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nami &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namo &amp;lt;br&amp;gt;&lt;br /&gt;
4831,4832d4823 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nangra &amp;lt;br&amp;gt;&lt;br /&gt;
5020d5010 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ningra &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sentences==&lt;br /&gt;
For genitive vs. possessive disambiguation.&lt;br /&gt;
Possessive only appears directly after noun marker ({{tag|nm}}).&lt;br /&gt;
&lt;br /&gt;
* Ulahen namu ku ina namu. (genitive) https://shs.hal.science/halshs-03483275 (p. 39)&lt;br /&gt;
* Ngaʼay ho ku namu? (Posessive) Wu Dissertation p.86.&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Ulahen namu ku ina namu&amp;quot; | apertium -d. ami-morph &amp;lt;br&amp;gt;&lt;br /&gt;
^Ulahen/ulah&amp;lt;v&amp;gt;&amp;lt;uv&amp;gt;&amp;lt;futi&amp;gt;$ ^namu/&amp;#039;&amp;#039;&amp;#039;amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;&amp;#039;&amp;#039;&amp;#039;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$ ^ku/u&amp;lt;nm&amp;gt;&amp;lt;un&amp;gt;&amp;lt;nom&amp;gt;$ ^ina/ina&amp;lt;n&amp;gt;$ ^namu/&amp;#039;&amp;#039;&amp;#039;amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;&amp;#039;&amp;#039;&amp;#039;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Ngaʼay ho ku namu&amp;quot; | apertium -d. ami-morph &amp;lt;br&amp;gt;&lt;br /&gt;
^Ngaʼay/ngaʼay&amp;lt;adj&amp;gt;$ ^ho/ho&amp;lt;asp&amp;gt;&amp;lt;impf&amp;gt;$ ^ku/u&amp;lt;nm&amp;gt;&amp;lt;un&amp;gt;&amp;lt;nom&amp;gt;$ ^namu/&amp;#039;&amp;#039;&amp;#039;amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;&amp;#039;&amp;#039;&amp;#039;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;$&lt;br /&gt;
&lt;br /&gt;
==final evaluation of ambiguity==&lt;br /&gt;
The number of tokens is 2114. The total number of analyses is 2239. The ambiguity is 2239/2114 = 1.059&lt;br /&gt;
&lt;br /&gt;
[[Category:Amis]][[Category:Sp23_Disambiguation]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20542</id>
		<title>Amis/Disambiguation</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20542"/>
				<updated>2023-03-21T14:23:13Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==initial evaluation of ambiguity==&lt;br /&gt;
to remove weird characters from tests, run command line measurements with options like this:  &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | wc -l&lt;br /&gt;
&lt;br /&gt;
ex., to get all of the ambiguous analyses do: &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | grep &amp;#039;\/.*\/&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The ambiguity of a corpus is the average number of analyses provided per token. Our initial ambiguity is 2066/1941 = 1.064&lt;br /&gt;
&lt;br /&gt;
The number of all forms is 6283.&lt;br /&gt;
The number of unique forms is 6273.&lt;br /&gt;
&lt;br /&gt;
The comparison: &amp;lt;br&amp;gt;&lt;br /&gt;
40,41d39 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ako &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; aku &amp;lt;br&amp;gt;&lt;br /&gt;
68d65 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; iso &amp;lt;br&amp;gt;&lt;br /&gt;
70,71d66 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; isu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ita &amp;lt;br&amp;gt;&lt;br /&gt;
4827,4828d4821 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nami &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namo &amp;lt;br&amp;gt;&lt;br /&gt;
4831,4832d4823 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nangra &amp;lt;br&amp;gt;&lt;br /&gt;
5020d5010 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ningra &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sentences==&lt;br /&gt;
For genitive vs. possessive disambiguation.&lt;br /&gt;
Possessive only appears directly after noun marker ({{tag|nm}}).&lt;br /&gt;
&lt;br /&gt;
* Ulahen namu ku ina namu. (genitive) https://shs.hal.science/halshs-03483275 (p. 39)&lt;br /&gt;
* Ngaʼay ho ku namu? (Posessive) Wu Dissertation p.86.&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Ulahen namu ku ina namu&amp;quot; | apertium -d. ami-morph &amp;lt;br&amp;gt;&lt;br /&gt;
^Ulahen/*Ulahen$ ^namu/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$ ^ku/*ku$ ^ina/*ina$ ^namu/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$^./.&amp;lt;sent&amp;gt;$&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Ngaʼay ho ku namu&amp;quot; | apertium -d. ami-morph &amp;lt;br&amp;gt;&lt;br /&gt;
^Ngaʼay/*Ngaʼay$ ^ho/*ho$ ^ku/*ku$ ^namu/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$^./.&amp;lt;sent&amp;gt;$&lt;br /&gt;
&lt;br /&gt;
==final evaluation of ambiguity==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Amis]][[Category:Sp23_Disambiguation]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20541</id>
		<title>Amis/Disambiguation</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20541"/>
				<updated>2023-03-21T14:22:44Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==initial evaluation of ambiguity==&lt;br /&gt;
to remove weird characters from tests, run command line measurements with options like this:  &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | wc -l&lt;br /&gt;
&lt;br /&gt;
ex., to get all of the ambiguous analyses do: &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | grep &amp;#039;\/.*\/&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The ambiguity of a corpus is the average number of analyses provided per token. Our initial ambiguity is 2066/1941 = 1.064&lt;br /&gt;
&lt;br /&gt;
The number of all forms is 6283.&lt;br /&gt;
The number of unique forms is 6273.&lt;br /&gt;
&lt;br /&gt;
The comparison: &amp;lt;br&amp;gt;&lt;br /&gt;
40,41d39 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ako &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; aku &amp;lt;br&amp;gt;&lt;br /&gt;
68d65 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; iso &amp;lt;br&amp;gt;&lt;br /&gt;
70,71d66 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; isu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ita &amp;lt;br&amp;gt;&lt;br /&gt;
4827,4828d4821 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nami &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namo &amp;lt;br&amp;gt;&lt;br /&gt;
4831,4832d4823 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nangra &amp;lt;br&amp;gt;&lt;br /&gt;
5020d5010 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ningra &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sentences==&lt;br /&gt;
For genitive vs. possessive disambiguation.&lt;br /&gt;
Possessive only appears directly after noun marker ({{tag|nm}}).&lt;br /&gt;
&lt;br /&gt;
* Ulahen namu ku ina namu. (genitive) https://shs.hal.science/halshs-03483275 (p. 39)&lt;br /&gt;
* Ngaʼay ho ku namu? (Posessive) Wu Dissertation p.86.&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Ulahen namu ku ina namu&amp;quot; | apertium -d. ami-morph&lt;br /&gt;
^Ulahen/*Ulahen$ ^namu/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$ ^ku/*ku$ ^ina/*ina$ ^namu/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$^./.&amp;lt;sent&amp;gt;$&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Ngaʼay ho ku namu&amp;quot; | apertium -d. ami-morph&lt;br /&gt;
^Ngaʼay/*Ngaʼay$ ^ho/*ho$ ^ku/*ku$ ^namu/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;gen&amp;gt;/amu&amp;lt;prn&amp;gt;&amp;lt;pers&amp;gt;&amp;lt;pl&amp;gt;&amp;lt;p2&amp;gt;&amp;lt;pos&amp;gt;$^./.&amp;lt;sent&amp;gt;$&lt;br /&gt;
&lt;br /&gt;
==final evaluation of ambiguity==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Amis]][[Category:Sp23_Disambiguation]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	<entry>
		<id>http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20446</id>
		<title>Amis/Disambiguation</title>
		<link rel="alternate" type="text/html" href="http://wikis.swarthmore.edu/ling073/index.php?title=Amis/Disambiguation&amp;diff=20446"/>
				<updated>2023-03-16T15:08:02Z</updated>
		
		<summary type="html">&lt;p&gt;Lchien1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==initial evaluation of ambiguity==&lt;br /&gt;
to remove weird characters from tests, run command line measurements with options like this:  &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | wc -l&lt;br /&gt;
&lt;br /&gt;
ex., to get all of the ambiguous analyses do: &amp;lt;br&amp;gt;&lt;br /&gt;
cat ami.corpus.basic.txt | apertium-destxt | hfst-proc ./ami.automorf.hfst | apertium-retxt | sed &amp;#039;s/$\W*\^/$\n^/g&amp;#039; | grep &amp;#039;\/.*\/&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The ambiguity of a corpus is the average number of analyses provided per token. Our initial ambiguity is 2066/1941 = 1.064&lt;br /&gt;
&lt;br /&gt;
The number of all forms is 6283.&lt;br /&gt;
The number of unique forms is 6273.&lt;br /&gt;
&lt;br /&gt;
The comparison: &amp;lt;br&amp;gt;&lt;br /&gt;
40,41d39 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ako &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; aku &amp;lt;br&amp;gt;&lt;br /&gt;
68d65 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; iso &amp;lt;br&amp;gt;&lt;br /&gt;
70,71d66 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; isu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ita &amp;lt;br&amp;gt;&lt;br /&gt;
4827,4828d4821 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nami &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namo &amp;lt;br&amp;gt;&lt;br /&gt;
4831,4832d4823 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; namu &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; nangra &amp;lt;br&amp;gt;&lt;br /&gt;
5020d5010 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt; ningra &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==final evaluation of ambiguity==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Amis]][[Category:Sp23_Disambiguation]]&lt;/div&gt;</summary>
		<author><name>Lchien1</name></author>	</entry>

	</feed>