-
Notifications
You must be signed in to change notification settings - Fork 0
/
paraphraser1.pl
120 lines (98 loc) · 3.58 KB
/
paraphraser1.pl
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
% paraphraser1.pl
% Tries to paraphrase each non-trivial word
% Uses formatting preserver x splits on space, return x needs formatting - use lpi 117
/*
% place text to be paraphrased in file.txt
cd Philosophy/
swipl
['paraphraser1.pl'].
paraphraser([file,"file.txt"],_).
% Find paraphrased file in file2.txt
*/
:-dynamic auto/1.
:- include('../listprologinterpreter/listprolog').
paraphraser(Parameters,File_list_a,Auto) :-
retractall(auto(_)),
assertz(auto(Auto)),
paraphraser(Parameters,File_list_a),!.
paraphraser([string,String],File_list_a) :-
(not(catch(auto(_),_,false))->
(retractall(auto(_)),
assertz(auto(off)));true),
%File1="test1.pl",
string_codes(String,Codes),
paraphraser1(Codes,File_list_a),!.
paraphraser([file,File1],File_list_a
) :-
(not(catch(auto(_),_,false))->
(retractall(auto(_)),
assertz(auto(off)));true),
%File1="test1.pl",
phrase_from_file_s(string(Codes), File1),
paraphraser1(Codes,File_list_a),
(open_s("file2.txt",write,Stream1),
write(Stream1,File_list_a),
close(Stream1)),!.
paraphraser1(Codes,File_list_a) :-
SepandPad=%".",%
"&#@~%`$?-+*^,()|.:;=_/[]<>{}\n\r\s\t\\\"!0123456789", % doesn't have "'" xx
%string_codes(String1,Codes),
%string_to_list2(SepandPad,[],SepandPad1),
string_codes(SepandPad,SepandPad1),
%split_string2(String1,SepandPad1,File_list),
split_on_substring117(Codes,SepandPad1,[],File_list),
%split_string(String1,SepandPad,SepandPad,File_list),
phrase_from_file_s(string(Codes2), "thesaurus.txt"),
%trace,
string_codes(String2,Codes2),
atom_to_term(String2,Synonym_list,_),
paraphrase1(File_list,[],File_list2a,Synonym_list,Synonym_list2),
concat_list(File_list2a,File_list_a),
term_to_atom(Synonym_list2,Synonym_list_a),
(open_s("thesaurus.txt",write,Stream2),
write(Stream2,Synonym_list_a),
close(Stream2)),!.
string_to_list2(B,A1,A2) :-
string_concat(D,"",B),
string_length(D,1),
append(A1,[D],A2),!.
string_to_list2(A,B,C) :-
string_concat(D,E,A),
string_length(D,1),
append(B,[D],F),
string_to_list2(E,F,C).
paraphrase1([""],File_list,File_list,Synonym_list,Synonym_list) :- !.
paraphrase1([],File_list,File_list,Synonym_list,Synonym_list) :- !.
paraphrase1(File_list,File_list1,File_list2,Synonym_list,Synonym_list2) :-
File_list=[File_list3|File_list4],
string_concat(File_list5,_E,File_list3),
string_length(File_list5,1),
string_codes(File_list5,File_list5_c),
(not(phrase(word1(File_list5_c),_))->true;
member(File_list3,["the","a","i","on","with","of","an","for","to","was","were","and","in","my","from","out","by"])),
append(File_list1,[File_list3],File_list6),
paraphrase1(File_list4,File_list6,File_list2,Synonym_list,Synonym_list2).
paraphrase1(File_list,File_list1,File_list2,Synonym_list,Synonym_list2) :-
File_list=[File_list3|File_list4],
string_concat(File_list5,_E,File_list3),
string_length(File_list5,1),
%letters(File_list5),
string_codes(File_list5,File_list5_c),
phrase(word1(File_list5_c),_),
(((member([File_list3,Synonym],Synonym_list)->true;
member([Synonym,File_list3],Synonym_list))->
(append(File_list1,[Synonym],File_list6),
Synonym_list=Synonym_list1);
((%true%trace,
%trace,
auto(off))
->
(concat_list(["What is a synonym for: ",File_list3,"\n","or <Return> to skip."],Notification),writeln(Notification),
read_string(user_input, "\n", "\r", _End, Input),
(Input=""->(Synonym2=File_list3);(Synonym2=Input)),append(Synonym_list,[[File_list3,Synonym2]],Synonym_list1));
(%File_list1=File_list6,
Synonym2=File_list3,
Synonym_list=Synonym_list1)
)),
append(File_list1,[Synonym2],File_list6)),
paraphrase1(File_list4,File_list6,File_list2,Synonym_list1,Synonym_list2).