Difference between revisions of "CISC181 S2017 Lab8"
(→Instructions) |
(→Instructions) |
||
Line 10: | Line 10: | ||
In this lab you will analyze text files by breaking them into [https://en.wikipedia.org/wiki/N-gram ''n-grams''] at the character level, and use those n-grams to generate random text in the same "style" (in a statistical sense). An n-gram is a sequence of n consecutive characters from the input. The complete set of n-grams for a text overlap each other--for example, if the text is "the three pirates charted that course the other day ", the 2-grams are listed below: | In this lab you will analyze text files by breaking them into [https://en.wikipedia.org/wiki/N-gram ''n-grams''] at the character level, and use those n-grams to generate random text in the same "style" (in a statistical sense). An n-gram is a sequence of n consecutive characters from the input. The complete set of n-grams for a text overlap each other--for example, if the text is "the three pirates charted that course the other day ", the 2-grams are listed below: | ||
− | + | {| class="wikitable" style="text-align: center" border="1" cellpadding="5" | |
+ | !width="20%"|n-gram | ||
+ | !width="80%"|Character after | ||
+ | |- | ||
+ | |"th" | ||
+ | |"e", "r", "a", "e", "e" | ||
+ | } | ||
Your job is to find all of the n-grams for a text, and furthermore to record all of the possible characters that follow each particular n-gram. In the "woodchucks" example, no 3-grams are repeated, but suppose you look at 1-grams. Then the set of characters is "w", "o", "d", "c", "h", "u", "k", and "s". "o" is followed by an "o" once, and a "d" once. "c" is followed by an "h" once and a "k" once. | Your job is to find all of the n-grams for a text, and furthermore to record all of the possible characters that follow each particular n-gram. In the "woodchucks" example, no 3-grams are repeated, but suppose you look at 1-grams. Then the set of characters is "w", "o", "d", "c", "h", "u", "k", and "s". "o" is followed by an "o" once, and a "d" once. "c" is followed by an "h" once and a "k" once. |
Revision as of 09:22, 17 April 2017
Preliminaries
- Make a new project with n = 8 (following these instructions)
- Name your main class "Lab8" (when creating a new module in the instructions above, in the Java class name field)
- Modify Lab8.java by adding your name and section number in a comment before the Lab8 class body.
Instructions
In this lab you will analyze text files by breaking them into n-grams at the character level, and use those n-grams to generate random text in the same "style" (in a statistical sense). An n-gram is a sequence of n consecutive characters from the input. The complete set of n-grams for a text overlap each other--for example, if the text is "the three pirates charted that course the other day ", the 2-grams are listed below:
n-gram | Character after |
---|---|
"th" | "e", "r", "a", "e", "e"
} Your job is to find all of the n-grams for a text, and furthermore to record all of the possible characters that follow each particular n-gram. In the "woodchucks" example, no 3-grams are repeated, but suppose you look at 1-grams. Then the set of characters is "w", "o", "d", "c", "h", "u", "k", and "s". "o" is followed by an "o" once, and a "d" once. "c" is followed by an "h" once and a "k" once. Suppose, for example, that you are working with 2-grams, and you have found that 80% of the time "th" is followed by "e ", 10% by "is", 7% by "at", and 3% by "es". Then, when you are generating text, after you have generated "th" you should randomly choose "e " with probability 0.8, "is" with probability 0.1, "at" with probability 0.07, and "es" with probability 0.03. RandomWriterYou are to implement a Java public class RandomWriter that provides a random writing application. Your class should have a two-argument constructor that takes:
and also a method generateText() that takes the following two parameters:
TestingIn main(), run your code on the following files: Generate approximately 500 characters of text for each input. Print the text in reasonable length lines, breaking only at spaces (not in the middle of a word). Do this for 1-grams, 2-grams, 4-grams, and 6-grams. AcknowledgmentsThis assignment is shamelessly copied from one created by David Matuszek at the University of Pennsylvania. |