Remove duplicate words from a sentence
JavaScript (ES6), 98

Note while I found it myself, it's annoyingly similar to @Neil's, just with the additional logic to split the whole input string in sentences.

s=&gt;s.replace(/[^\n.!?]+/g,s=&gt;s.replace(/ *([a-z]+)/ig,(r,w)=&gt;k[w=w.toUpperCase()]?'':k[w]=r,k=[]))


Test



f=s=&gt;s.replace(/[^\n.!?]+/g,s=&gt;s.replace(/ *([a-z]+)/ig,(r,w)=&gt;k[w=w.toUpperCase()]?'':k[w]=r,k=[]))

console.log=x=&gt;O.textContent+=x+'\n'

;[['Hello Hello, World!','Hello, World!']
,['Code Code! Golf Code','Code! Golf Code']
,['Hello  hello   World','Hello   World']
,['Programming Golf Programming!','Programming Golf!']]
.forEach(t=&gt;{
  var i=t[0],k=t[1],r=f(i)
  console.log((r==k?'OK ':'KO ')+i+' -&gt; '+r)
})  
&lt;pre id=O&gt;&lt;/pre&gt;