-
Notifications
You must be signed in to change notification settings - Fork 3
/
index.html
79 lines (61 loc) · 4.66 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<link href="simple-style.css" rel="stylesheet">
</head>
<body>
<h1> textVary </h1>
<h4>Help you write better GRE/TOEFL essays by detecting your repeating phrases.</h4>
<hr>
<h2> What is textVary </h2>
<p>
In GRE/TOEFL writing, a varied sentence structure and vocabulary often helps you a lot to receive a high score. And here comes <strong>textVary</strong>, a writing assistant program that is capable of detecting your repeating phrases and providing you with visual feedback, thus helping you form a habit of using diverse expressions.
</p>
<div class="example">
<p>The following video demonstrates how textVary helps the user avoid a second use of the phrase 'as well as'.</p>
<video src="https://github.com/MrVPlusOne/textVary-storage/master/use_1.mov" loop="loop" controls="controls" style="max-width: 95% ;width: 600px;"></video>
</div>
<div class="example">
<p>TextVary can also recognize various forms of the same word.</p>
<img src="https://github.com/MrVPlusOne/textVary-storage/blob/master/different_forms.png?raw=true" width="600">
</div>
<div class="example">
<p>In fact, textVary analyzes your essays carefully, it even understands the same punctuation may have different meaning in different contexts.</p>
<video src="https://github.com/MrVPlusOne/textVary-storage/master/smart_parse.mov" loop="loop" controls="controls" style="max-width: 95% ;width: 600px;"></video>
</div>
<h2>Download</h2>
<a href="https://github.com/MrVPlusOne/textVary#download">
download from github
</a>
<h2>How it works</h2>
<p>To get statistics of phrase usage from the input:</p>
<ul>
<li>TextVary first parses the essay into a sequence of <em>SentencePart</em>s, each <em>SentencePart</em> is composed of many <em>WordUsage</em>s</li>
<li>A <em>WordUsage</em> contains information about a word's original form and position in the essay, as well as the stem of that word. The stem is used to match words and phrases in later stages.
<ul>
<li>The parser is written in the parser-combinator library <a href="https://github.com/lihaoyi/fastparse">FastParse</a></li>
<li>The stemming strategy makes use of a combination of Porter's algorithm and an irregular word list. The scala implementation of Porter's algorithm was copied from <a href="https://github.com/scalanlp/chalk/blob/master/src/main/scala/chalk/text/analyze/PorterStemmer.scala">here</a></li>
</ul></li>
<li>TextVary stores a collection of set phrases as a Finite State Automaton(FSA). The words in those phrases are reduced to their stem forms.</li>
<li>To detect set phrases, textVary uses a greedy algorithm, trying to find the longest phrases accepted by the FSA. A set phrase can not span across the boundaries of <em>SentencePart</em>s.</li>
</ul>
<p>To turn the statistics into visual feedback:</p>
<ul>
<li><p>The UI is implemented in a Reactive Programming (RP) style.</p>
<ul>
<li>(The current input ~> usage statistics) + UI input information ~> visual data ~> draw visual elements on top of the input</li>
</ul>
</li>
<li><p>As the frequency of a word or phrase increases, its background color varies from a translucent yellow to a transparent red. In this way, if a usage appears again and again in an essay, its highlight will eventually become unnoticeable. This is the desired behaviour because it helps the user focus on avoiding using the same expression twice or the third time, but ignore the repeating use of topic words or key words.</p>
<ul>
<li><a href="https://github.com/MrVPlusOne/textVary-storage/blob/master/2cars.png?raw=true" target="_blank"><img src="https://github.com/MrVPlusOne/textVary-storage/raw/master/2cars.png?raw=true" alt="2 cars" style="max-width:100%;"></a></li>
<li><a href="https://github.com/MrVPlusOne/textVary-storage/blob/master/4cars.png?raw=true" target="_blank"><img src="https://github.com/MrVPlusOne/textVary-storage/raw/master/4cars.png?raw=true" alt="4 cars" style="max-width:100%;"></a></li>
<li><a href="https://github.com/MrVPlusOne/textVary-storage/blob/master/8cars.png?raw=true" target="_blank"><img src="https://github.com/MrVPlusOne/textVary-storage/raw/master/8cars.png?raw=true" alt="8 cars" style="max-width:100%;"></a></li>
</ul></li>
</ul>
<h2>About the author</h2>
<p> TextVary is written by Jiayi Wei(魏家一), here is <a href="https://github.com/MrVPlusOne">his github homepage</a>.</p>
</body>
</html>