Faits : A. A._, née en 1960, a bénéficié d'une demi-rente de l'assurance-invalidité depuis le 1 er juillet 1994. Le 15 décembre 2010, elle a demandé une réévaluation de sa rente, invoquant une détérioration de son état de santé. L'Office de l'assurance-invalidité du canton de Neuchâtel (l'office AI) a constaté que l'incapacité de travail avait été entière dans toute activité du 22 octobre 2010 jusqu'au 30 novembre 2011. L'état de santé s'était ensuite amélioré, si bien que l'aggravation annoncée le 15 décembre 2010 n'avait plus de répercussion sur la capacité de travail. Par décision du 2 octobre 2013, confirmant un projet d'augmentation temporaire de la rente du 19 avril 2013, l'office AI a alloué à l'assurée une rente entière du 1 er janvier 2011 au 31 janvier 2012, puis à nouveau une demi-rente à compter du 1 er février 2012. B. Contestant notamment toute amélioration de son état de santé et se prévalant d'une notification irrégulière de la décision du 2 octobre 2013, A._ a déféré celle-ci au Tribunal cantonal de la République et canton de Neuchâtel, Cour de droit public, en concluant principalement à son annulation et à l'octroi d'une rente entière dès le 1 er janvier 2011, subsidiairement à ce que la décision du 2 octobre 2013 lui fût à nouveau notifiée régulièrement. Par jugement du 20 janvier 2015, la juridiction cantonale a admis partiellement le recours, en ce sens qu'elle a étendu la durée du droit à la rente entière jusqu'au 1 er janvier 2014. C. L'office AI interjette un recours en matière de droit public contre ce jugement dont il demande l'annulation en concluant à la confirmation de sa décision du 2 octobre 2013. L'intimée conclut au rejet du recours et sollicite le bénéfice de l'assistance judiciaire. L'Office fédéral des assurances sociales a renoncé à se déterminer.