Я хочу извлечь текстовые значения из текста в пространстве

Это иногда случается, когда строка преобразуется из Windows-1252 в UTF-8 дважды .

У нас это было в приложении Zend / PHP / MySQL, где такие символы появлялись в базе данных, вероятно, из-за подключения MySQL, не задающего правильный набор символов. Нам пришлось:

  1. Обеспечить, чтобы Zend и PHP обменивались данными с базой данных в UTF-8 (по умолчанию был not )
  2. Исправить поврежденную символы с несколькими SQL-запросами, такими как ...
    UPDATE MyTable SET 
    MyField1 = CONVERT(CAST(CONVERT(MyField1 USING latin1) AS BINARY) USING utf8),
    MyField2 = CONVERT(CAST(CONVERT(MyField2 USING latin1) AS BINARY) USING utf8);
    
    Сделайте это для того, чтобы сколько угодно таблиц / столбцов.

Вы также можете исправить некоторые из этих строк в PHP, если это необходимо. Обратите внимание, что поскольку символы были закодированы дважды , нам действительно нужно сделать обратное преобразование из UTF-8 обратно в Windows-1252, что сначала смутило меня.

mb_convert_encoding('’', 'Windows-1252', 'UTF-8');    // returns ’
2
задан Amit Kanderi 5 March 2019 в 16:42
поделиться

1 ответ

Я не уверен, что формулирование этой проблемы как проблемы с распознаванием сущностей действительно имеет смысл. Именованные сущности обычно являются собственными существительными и «объектами реального мира» - например, имя человека, например «Джон Доу», название организации, например «Google», или такие вещи, как болезни или гены, для именования примеров из более конкретного домена. Это также то, для чего оптимизатор именованных объектов spaCy оптимизирован.

В вашем примере кажется, что большинство подсказок на самом деле в синтаксисе , который вы обычно можете предсказать довольно хорошо из коробки. Например, вы ищете глаголы, такие как «добавить» и «метка», и их объекты («текстовое поле») или прикрепленные фразы предложения. Если вы визуализируете синтаксис, например, Используя модуль displacy, вы увидите, что в структуре предложений есть много соответствующей информации, которую вы можете программно извлечь:

from spacy import displacy
doc = nlp("I want to add a text field having name as new data")
displacy.serve(doc)

Visualization of sentence [ 1113]

Вы также можете использовать сопоставление на основе правил , чтобы найти триггерные токены, например "label" (с тегом части речи VERB), а затем проверить дерево зависимостей найти жетоны, прикрепленные к ним. Например, если глагол «метка» присоединен к предлогу «как», вы можете быть совершенно уверены, что объект , прикрепленный к нему, является именем метки. Или вы можете начать с корня предложения и перебрать его subtree и проверить, содержит ли оно токены или конструкции, которые вас интересуют.

Возможно, вам придется немного поэкспериментировать, и вы, вероятно, в конечном итоге получите кучу разных правил, чтобы охватить различные типы конструкций, которые распространены в ваших данных.

0
ответ дан Ines Montani 5 March 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: