Remove ambiguous plural(s)!
Mathematica, 151 148 bytes

StringReplace[j=" ";k=Except@j;j&lt;&gt;j&lt;&gt;#&lt;&gt;j,j~~a:k...~~s:j..~~w:k..~~"(s)"~~j:&gt;{j,a,s,w,If[FreeQ[a,"a"|"an"|"1"|"one"],"s",""]}&lt;&gt;j]~StringTake~{3,-2}&amp;


Explanation

j=" ";k=Except@j


Set j to a whitespace character(s). Set k to the pattern "not j" (= non-whitespace character).

j&lt;&gt;j&lt;&gt;#&lt;&gt;j


Prepend two whitespace(s) and append one whitespace(s) to the input.

j~~a:k...~~s:j..~~w:k..~~"(s)"~~j


For a substring(s) matching the pattern:


One whitespace(s), followed by
a length-zero or longer substring consisting of only non-whitespace character(s) (quantifier) (call this a), followed by
a length-one or longer substring consisting of only whitespace character(s) (call this s), followed by
a length-one or longer substring consisting of only non-whitespace character(s) (word) (call this w), followed by
the string "(s)", followed by
a whitespace(s)



If[FreeQ[a,"a"|"an"|"1"|"one"],"s",""]


If a is not one of the singular word(s), evaluate to "s", otherwise "".

StringReplace[..., ... :&gt;{j,a,s,w,If[FreeQ[a,"a"|"an"|"1"|"one"],"s",""]}&lt;&gt;j]


Replace the matching pattern with j, a, s, w, If[FreeQ[a,"a"|"an"|"1"|"one"],"s",""], and j joined together.

... ~StringTake~{3,-2}


Take from position 3 to position -2 (1-indexed; negative indices count from the end). This is because we added three space(s) in the beginning.