Если предложенные выше решения в области ML не подойдут или дадут неважный результат, можно попробовать Pullenti, в котором решается, в частности, задача кореференции - отождествление сущностей с учётом разного написания. Если оба списка организаций небольшие (скажем, не более 10000), то можно объединить тексты, подать на вход NER, и если организация есть в обоих списках, то у неё будут как минимум 2 вхождения - в первую половину и во вторую половину текста. Аналогично адреса. Но это навскидку. Для большого эталонного списка орг-й можно использовать класс ExtOntology, предварительно инициализируя его этими организациями, и потом в тексте выделяемые организации будут пытаться привязываться к ним. Для большого количества адресов можно просто брать ToString() - строковое представление сущности, оно получается нормализованным, и как бы адрес ни написать, ToString() будет одинаковым.