Add files via upload
This commit is contained in:
@@ -40,9 +40,7 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import re\n",
|
||||
@@ -64,15 +62,41 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"And now the actual rules. If you have a sentence that is not translated correctly by this program, you can augment these rules to handle your sentence."
|
||||
"Let's see what a rule looks like:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"(('{P} ⇒ {Q}',\n",
|
||||
" ['if (?P<P>.+?) then (?P<Q>.+?)$', 'if (?P<P>.+?), (?P<Q>.+?)$']),)"
|
||||
]
|
||||
},
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"Rule('{P} ⇒ {Q}', 'if {P} then {Q}', 'if {P}, {Q}'),"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"And now the actual rules. If you have a sentence that is not translated correctly by this program, you can augment these rules to handle your sentence."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"rules = [\n",
|
||||
@@ -82,8 +106,9 @@
|
||||
" Rule('~{P} ⋀ ~{Q}', 'neither {P} nor {Q}'),\n",
|
||||
" Rule('~{A}{P} ⋀ ~{A}{Q}', '{A} neither {P} nor {Q}'), # The Kaiser neither ...\n",
|
||||
" Rule('~{Q} ⇒ {P}', '{P} unless {Q}'),\n",
|
||||
" Rule('{P} ⇒ {Q}', '{Q} provided that {P}', '{Q} whenever {P}', '{P} implies {Q}',\n",
|
||||
" '{P} therefore {Q}', '{Q}, if {P}', '{Q} if {P}', '{P} only if {Q}'),\n",
|
||||
" Rule('{P} ⇒ {Q}', '{Q} provided that {P}', '{Q} whenever {P}', \n",
|
||||
" '{P} implies {Q}', '{P} therefore {Q}', \n",
|
||||
" '{Q}, if {P}', '{Q} if {P}', '{P} only if {Q}'),\n",
|
||||
" Rule('{P} ⋀ {Q}', '{P} and {Q}', '{P} but {Q}'),\n",
|
||||
" Rule('{P} ⋁ {Q}', '{P} or else {Q}', '{P} or {Q}'),\n",
|
||||
" ]\n",
|
||||
@@ -102,15 +127,13 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now the mechanism to process these rules. Note that `defs` is a dict of definitions of propositional symbols: `{P: 'english'}`. The three `match_*` functions return two values: the translation of a sentence, and a dict of defintions."
|
||||
"Now the mechanism to process these rules. Note that the parameter `defs` is a dict of definitions of propositional symbols: `{P: 'english'}`. The three `match_*` functions return two values: the translation of a sentence, and a dict of defintions."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def match_rules(sentence, rules, defs):\n",
|
||||
@@ -167,63 +190,61 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"Polkadots and Moonbeams \n",
|
||||
"Logic: (P ⋀ Q)\n",
|
||||
"P: Polkadots\n",
|
||||
"Q: Moonbeams\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"If you liked it then you shoulda put a ring on it \n",
|
||||
"Logic: (P ⇒ Q)\n",
|
||||
"P: you liked it\n",
|
||||
"Q: you shoulda put a ring on it\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"If you build it, he will come \n",
|
||||
"Logic: (P ⇒ Q)\n",
|
||||
"P: you build it\n",
|
||||
"Q: he will come\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"It don't mean a thing, if it ain't got that swing \n",
|
||||
"Logic: (~P ⇒ ~Q)\n",
|
||||
"P: it is got that swing\n",
|
||||
"Q: It do mean a thing\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"If loving you is wrong, I don't want to be right \n",
|
||||
"Logic: (P ⇒ ~Q)\n",
|
||||
"P: loving you is wrong\n",
|
||||
"Q: I do want to be right\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"Should I stay or should I go \n",
|
||||
"Logic: (P ⋁ Q)\n",
|
||||
"P: Should I stay\n",
|
||||
"Q: should I go\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"I shouldn't go and I shouldn't not go \n",
|
||||
"Logic: (~P ⋀ ~~P)\n",
|
||||
"P: I should go\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"If I fell in love with you, would you promise to be true and help me understand \n",
|
||||
"Logic: (P ⇒ (Q ⋀ R))\n",
|
||||
"P: I fell in love with you\n",
|
||||
"Q: would you promise to be true\n",
|
||||
"R: help me understand\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"I could while away the hours conferrin' with the flowers, consulting with the rain and my head I'd be a\n",
|
||||
"scratchin' while my thoughts are busy hatchin' if I only had a brain \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"I could while away the hours conferrin' with the flowers, consulting with the rain and my\n",
|
||||
"head I'd be a scratchin' while my thoughts are busy hatchin' if I only had a brain \n",
|
||||
"Logic: (P ⇒ (Q ⋀ R))\n",
|
||||
"P: I only had a brain\n",
|
||||
"Q: I could while away the hours conferrin' with the flowers, consulting with the rain\n",
|
||||
"R: my head I'd be a scratchin' while my thoughts are busy hatchin'\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"There's a federal tax, and a state tax, and a city tax, and a street tax, and a sewer tax \n",
|
||||
"Logic: (P ⋀ (Q ⋀ (R ⋀ (S ⋀ T))))\n",
|
||||
"P: There's a federal tax\n",
|
||||
@@ -231,50 +252,53 @@
|
||||
"R: a city tax\n",
|
||||
"S: a street tax\n",
|
||||
"T: a sewer tax\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"A ham sandwich is better than nothing and nothing is better than eternal happiness therefore a ham\n",
|
||||
"sandwich is better than eternal happiness \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"A ham sandwich is better than nothing and nothing is better than eternal happiness\n",
|
||||
"therefore a ham sandwich is better than eternal happiness \n",
|
||||
"Logic: ((P ⋀ Q) ⇒ R)\n",
|
||||
"P: A ham sandwich is better than nothing\n",
|
||||
"Q: nothing is better than eternal happiness\n",
|
||||
"R: a ham sandwich is better than eternal happiness\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"If I were a carpenter and you were a lady, would you marry me anyway? and would you have my baby \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"If I were a carpenter and you were a lady, would you marry me anyway? and would you have\n",
|
||||
"my baby \n",
|
||||
"Logic: ((P ⋀ Q) ⇒ (R ⋀ S))\n",
|
||||
"P: I were a carpenter\n",
|
||||
"Q: you were a lady\n",
|
||||
"R: would you marry me anyway?\n",
|
||||
"S: would you have my baby\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"Either Danny didn't come to the party or Virgil didn't come to the party \n",
|
||||
"Logic: (~P ⋁ ~Q)\n",
|
||||
"P: Danny did come to the party\n",
|
||||
"Q: Virgil did come to the party\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"Either Wotan will triumph and Valhalla will be saved or else he won't and Alberic will have the final word \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"Either Wotan will triumph and Valhalla will be saved or else he won't and Alberic will\n",
|
||||
"have the final word \n",
|
||||
"Logic: ((P ⋀ Q) ⋁ (~R ⋀ S))\n",
|
||||
"P: Wotan will triumph\n",
|
||||
"Q: Valhalla will be saved\n",
|
||||
"R: he will\n",
|
||||
"S: Alberic will have the final word\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"Sieglinde will survive, and either her son will gain the Ring and Wotan's plan will be fulfilled or else\n",
|
||||
"Valhalla will be destroyed \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"Sieglinde will survive, and either her son will gain the Ring and Wotan's plan will be\n",
|
||||
"fulfilled or else Valhalla will be destroyed \n",
|
||||
"Logic: (P ⋀ ((Q ⋀ R) ⋁ S))\n",
|
||||
"P: Sieglinde will survive\n",
|
||||
"Q: her son will gain the Ring\n",
|
||||
"R: Wotan's plan will be fulfilled\n",
|
||||
"S: Valhalla will be destroyed\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"Wotan will intervene and cause Siegmund's death unless either Fricka relents or Brunnhilde has her way \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"Wotan will intervene and cause Siegmund's death unless either Fricka relents or Brunnhilde\n",
|
||||
"has her way \n",
|
||||
"Logic: (~(R ⋁ S) ⇒ (P ⋀ Q))\n",
|
||||
"P: Wotan will intervene\n",
|
||||
"Q: cause Siegmund's death\n",
|
||||
"R: Fricka relents\n",
|
||||
"S: Brunnhilde has her way\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"Figaro and Susanna will wed provided that either Antonio or Figaro pays and Bartolo is satisfied or else\n",
|
||||
"Marcellina's contract is voided and the Countess does not act rashly \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"Figaro and Susanna will wed provided that either Antonio or Figaro pays and Bartolo is\n",
|
||||
"satisfied or else Marcellina's contract is voided and the Countess does not act rashly \n",
|
||||
"Logic: ((((P ⋁ Q) ⋀ R) ⋁ (S ⋀ ~T)) ⇒ (U ⋀ V))\n",
|
||||
"P: Antonio\n",
|
||||
"Q: Figaro pays\n",
|
||||
@@ -283,10 +307,10 @@
|
||||
"T: the Countess does act rashly\n",
|
||||
"U: Figaro\n",
|
||||
"V: Susanna will wed\n",
|
||||
"__________________________________________________________________________________________________________ \n",
|
||||
"If the Kaiser neither prevents Bismarck from resigning nor supports the Liberals, then the military will\n",
|
||||
"be in control and either Moltke's plan will be executed or else the people will revolt and the Reich will\n",
|
||||
"not survive \n",
|
||||
"__________________________________________________________________________________________ \n",
|
||||
"If the Kaiser neither prevents Bismarck from resigning nor supports the Liberals, then the\n",
|
||||
"military will be in control and either Moltke's plan will be executed or else the people\n",
|
||||
"will revolt and the Reich will not survive \n",
|
||||
"Logic: ((~PQ ⋀ ~PR) ⇒ (S ⋀ (T ⋁ (U ⋀ ~V))))\n",
|
||||
"P: the Kaiser\n",
|
||||
"Q: prevents Bismarck from resigning\n",
|
||||
@@ -337,7 +361,7 @@
|
||||
"\n",
|
||||
"import textwrap\n",
|
||||
"\n",
|
||||
"def logic(sentences, width=106): \n",
|
||||
"def logic(sentences, width=90): \n",
|
||||
" \"Match the rules against each sentence in text, and print each result.\"\n",
|
||||
" for s in map(clean, sentences):\n",
|
||||
" logic, defs = match_rules(s, rules, {})\n",
|
||||
@@ -394,9 +418,9 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.5.1"
|
||||
"version": "3.5.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
"nbformat_minor": 1
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user