Advertisement
VincentOostelbos

Random sentence generator

Nov 22nd, 2018
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.22 KB | None | 0 0
  1. package randomPhrase;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.io.BufferedReader;
  7. import java.io.File;
  8. import java.io.FileInputStream;
  9. import java.io.FileNotFoundException;
  10. import java.io.IOException;
  11. import java.io.InputStreamReader;
  12. import java.util.ArrayList;
  13. import java.util.Random;
  14.  
  15. import javax.swing.JButton;
  16. import javax.swing.JFrame;
  17. import javax.swing.JPanel;
  18.  
  19. public class RandomPhrase {
  20.  
  21.     static Random random = new Random();
  22.    
  23.     public static void main(String[] args) throws IOException {
  24.         JFrame frame = new JFrame("Random Phrase");
  25.         JPanel panel = new JPanel();
  26.         //frame.setPreferredSize(new Dimension(600,400));
  27.         frame.add(panel);
  28.        
  29.         JButton npButton = new JButton("Noun phrase");
  30.         panel.add(npButton);
  31.         JButton vpButton = new JButton("Verb phrase");
  32.         panel.add(vpButton);
  33.         JButton sentenceButton = new JButton("Sentence (NP + VP)");
  34.         panel.add(sentenceButton);
  35.        
  36.         frame.pack();
  37.         frame.setVisible(true);
  38.        
  39.         npButton.addActionListener(new ActionListener() {
  40.             public void actionPerformed(ActionEvent e)
  41.               {
  42.                 String np = generateNP(random.nextBoolean());
  43.                 System.out.println(np);
  44.                 System.out.println();
  45.               }
  46.         });
  47.        
  48.         vpButton.addActionListener(new ActionListener() {
  49.             public void actionPerformed(ActionEvent e)
  50.               {
  51.                 String vp = generateVP(random.nextBoolean());
  52.                 System.out.println(vp);
  53.                 System.out.println();
  54.               }
  55.         });
  56.        
  57.         sentenceButton.addActionListener(new ActionListener() {
  58.             public void actionPerformed(ActionEvent e)
  59.               {
  60.                 Boolean bool = random.nextBoolean();
  61.                 String np = generateNP(bool);
  62.                 String vp = generateVP(bool);
  63.                 System.out.println(np + " " + vp);
  64.                 System.out.println();
  65.               }
  66.         });
  67.     }
  68.    
  69.     public static String generateNP(boolean plural) {
  70.         StringBuilder npsb = new StringBuilder();
  71.        
  72.         // Chance of determiner
  73.         if(random.nextBoolean()) {
  74.             String buffer = null;
  75.             FileInputStream fistream = null;
  76.             try {
  77.                 if(!plural) fistream = new FileInputStream("determiners.txt");
  78.                 else fistream = new FileInputStream("determinersplural.txt");
  79.                 BufferedReader br = new BufferedReader(new InputStreamReader(fistream));
  80.                 ArrayList<String> lines = new ArrayList<String>();
  81.                 buffer = br.readLine();
  82.                 while(buffer != null) {
  83.                     lines.add(buffer);
  84.                     buffer = br.readLine();
  85.                 }
  86.                 npsb.append(lines.get(random.nextInt(lines.size())));
  87.                 npsb.append(" ");
  88.                 br.close();
  89.             } catch (FileNotFoundException e1) {
  90.                 // TODO Auto-generated catch block
  91.                 e1.printStackTrace();
  92.             } catch (IOException e1) {
  93.                 // TODO Auto-generated catch block
  94.                 e1.printStackTrace();
  95.             }
  96.         }
  97.        
  98.         // Chance of adjective(s)
  99.         while(random.nextInt(3) == 0) {
  100.             String buffer = null;
  101.             FileInputStream fistream = null;
  102.             try {
  103.                 fistream = new FileInputStream("adjectives.txt");
  104.                 BufferedReader br = new BufferedReader(new InputStreamReader(fistream));
  105.                 ArrayList<String> lines = new ArrayList<String>();
  106.                 buffer = br.readLine();
  107.                 while(buffer != null) {
  108.                     lines.add(buffer);
  109.                     buffer = br.readLine();
  110.                 }
  111.                 npsb.append(lines.get(random.nextInt(lines.size())));
  112.                 npsb.append(" ");
  113.                 br.close();
  114.             } catch (FileNotFoundException e1) {
  115.                 // TODO Auto-generated catch block
  116.                 e1.printStackTrace();
  117.             } catch (IOException e1) {
  118.                 // TODO Auto-generated catch block
  119.                 e1.printStackTrace();
  120.             }
  121.         }
  122.        
  123.         // Noun
  124.         String buffer = null;
  125.         FileInputStream fistream = null;
  126.         try {
  127.             fistream = plural ? new FileInputStream("nounsplural.txt") : new FileInputStream("nouns.txt");
  128.             BufferedReader br = new BufferedReader(new InputStreamReader(fistream));
  129.             ArrayList<String> lines = new ArrayList<String>();
  130.             buffer = br.readLine();
  131.             while(buffer != null) {
  132.                 lines.add(buffer);
  133.                 buffer = br.readLine();
  134.             }
  135.             npsb.append(lines.get(random.nextInt(lines.size())));
  136.             br.close();
  137.         } catch (FileNotFoundException e1) {
  138.             // TODO Auto-generated catch block
  139.             e1.printStackTrace();
  140.         } catch (IOException e1) {
  141.             // TODO Auto-generated catch block
  142.             e1.printStackTrace();
  143.         }
  144.        
  145.         // Chance of PP(s)
  146.         while(random.nextInt(5) == 0) {
  147.             npsb.append(" ");
  148.             npsb.append(generatePP());
  149.         }
  150.        
  151.         return npsb.toString();
  152.     }
  153.    
  154.     public static String generatePP() {
  155.         StringBuilder ppsb = new StringBuilder();
  156.        
  157.         // Preposition
  158.         String buffer = null;
  159.         try {
  160.             FileInputStream fistream = new FileInputStream("prepositions.txt");
  161.             BufferedReader br = new BufferedReader(new InputStreamReader(fistream));
  162.             ArrayList<String> lines = new ArrayList<String>();
  163.             buffer = br.readLine();
  164.             while(buffer != null) {
  165.                 lines.add(buffer);
  166.                 buffer = br.readLine();
  167.             }
  168.             ppsb.append(lines.get(random.nextInt(lines.size())));
  169.             ppsb.append(" ");
  170.             br.close();
  171.         } catch (FileNotFoundException e1) {
  172.             // TODO Auto-generated catch block
  173.             e1.printStackTrace();
  174.         } catch (IOException e1) {
  175.             // TODO Auto-generated catch block
  176.             e1.printStackTrace();
  177.         }
  178.        
  179.         // Noun phrase
  180.         ppsb.append(generateNP(random.nextBoolean()));
  181.        
  182.         return ppsb.toString();
  183.     }
  184.  
  185.     public static String generateVP(boolean plural) {
  186.         StringBuilder vpsb = new StringBuilder();
  187.         String buffer = null;
  188.        
  189.         switch(random.nextInt(3)) {
  190.         case 0: // Intransitive
  191.             // Verb
  192.             try {
  193.                 FileInputStream fistream = new FileInputStream("intransitives.txt");
  194.                 BufferedReader br = new BufferedReader(new InputStreamReader(fistream));
  195.                 ArrayList<String> lines = new ArrayList<String>();
  196.                 buffer = br.readLine();
  197.                 while(buffer != null) {
  198.                     lines.add(buffer);
  199.                     buffer = br.readLine();
  200.                 }
  201.                 vpsb.append(plural ? "are " : "is ");
  202.                 String line = lines.get(random.nextInt(lines.size()));
  203.                
  204.                 // Parse line to find -ing form
  205.                 String parse[];
  206.                 String delims = "[,]+";
  207.                 parse = line.split(delims);
  208.                 if(line.indexOf(',') != -1) line = parse[1];
  209.                 else {
  210.                     StringBuilder sb = new StringBuilder();
  211.                     sb.append(line);
  212.                     sb.append("ing");
  213.                     line = sb.toString();
  214.                 }
  215.                
  216.                 vpsb.append(line);
  217.                 br.close();
  218.             } catch (FileNotFoundException e1) {
  219.                 // TODO Auto-generated catch block
  220.                 e1.printStackTrace();
  221.             } catch (IOException e1) {
  222.                 // TODO Auto-generated catch block
  223.                 e1.printStackTrace();
  224.             }
  225.            
  226.             break;
  227.         case 1: // State of being + adjective
  228.             vpsb.append(plural ? "are " : "is ");
  229.            
  230.             // Adjective
  231.             buffer = null;
  232.             FileInputStream fistream = null;
  233.             try {
  234.                 fistream = new FileInputStream("adjectives.txt");
  235.                 BufferedReader br = new BufferedReader(new InputStreamReader(fistream));
  236.                 ArrayList<String> lines = new ArrayList<String>();
  237.                 buffer = br.readLine();
  238.                 while(buffer != null) {
  239.                     lines.add(buffer);
  240.                     buffer = br.readLine();
  241.                 }
  242.                 vpsb.append(lines.get(random.nextInt(lines.size())));
  243.                 br.close();
  244.             } catch (FileNotFoundException e1) {
  245.                 // TODO Auto-generated catch block
  246.                 e1.printStackTrace();
  247.             } catch (IOException e1) {
  248.                 // TODO Auto-generated catch block
  249.                 e1.printStackTrace();
  250.             }
  251.            
  252.             break;
  253.         case 2: // Transitive
  254.             try {
  255.                 fistream = new FileInputStream("transitives.txt");
  256.                 BufferedReader br = new BufferedReader(new InputStreamReader(fistream));
  257.                 ArrayList<String> lines = new ArrayList<String>();
  258.                 buffer = br.readLine();
  259.                 while(buffer != null) {
  260.                     lines.add(buffer);
  261.                     buffer = br.readLine();
  262.                 }
  263.                 String line = lines.get(random.nextInt(lines.size()));
  264.                
  265.                 // Parse line to find -s form
  266.                 String parse[];
  267.                 String delims = "[,]+";
  268.                 parse = line.split(delims);
  269.                 if(line.indexOf(',') != -1) line = parse[1];
  270.                 else {
  271.                     StringBuilder sb = new StringBuilder();
  272.                     sb.append(line);
  273.                     if(!plural) sb.append("s");
  274.                     line = sb.toString();
  275.                 }
  276.                
  277.                 vpsb.append(line);
  278.                 vpsb.append(" ");
  279.                 br.close();
  280.             } catch (FileNotFoundException e1) {
  281.                 // TODO Auto-generated catch block
  282.                 e1.printStackTrace();
  283.             } catch (IOException e1) {
  284.                 // TODO Auto-generated catch block
  285.                 e1.printStackTrace();
  286.             }
  287.            
  288.             // Noun phrase
  289.             vpsb.append(generateNP(random.nextBoolean()));
  290.            
  291.             break;
  292.         }
  293.         return vpsb.toString();
  294.     }
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement