Распознавание сущностей с контекстом/отношением

Вопрос или проблема

Есть ли способ получить конкретную сущность на основе контекста, в котором она находится? Например:

Температура сегодня 35°C.

Храните таблетку рисперидона при 20°C.

Обе фразы говорят о температуре. В первом предложении я хотел бы, чтобы температура была сущностью “WeatherTemperature”. Во втором предложении я хотел бы, чтобы температура была “DrugTemperature”. Какую модель я мог бы использовать для обучения такого поведения?

С помощью Wolfram Language вы можете использовать TextCases или TextContents из руководства по текстовому анализу. Эти функции являются экспериментальными, поэтому они могут немного измениться, прежде чем будут окончательно завершены в будущих версиях. Обе функции имеют опцию TargetDevice, так что вы можете запускать их на одном или нескольких графических процессорах, если они у вас есть.

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

Я думаю, что TextContents является оптимизированным вызовом для TextCases для нескольких случаев, поэтому я буду использовать только TextContents ниже.

Используйте TextContents для нахождения всех обученных сущностей в ваших предложениях.

res1 = TextContents["Температура сегодня 35°C.", TargetDevice -> "GPU"]

Графика Mathematica

res2 = TextContents["Храните таблетку рисперидона при 20°C.", TargetDevice -> "GPU"]

Графика Mathematica

TextContents возвращает объект Dataset, который можно запросить с помощью Query для получения конкретных случаев.

Например, для вашей “DrugTemperature”

res2[ContainsAll[{"Chemical", "Quantity"}], "Type"]
True

и единицы измерения количества

res2[
  SelectFirst[#["Type"] == "Quantity" &], 
  "String" /* SemanticInterpretation /* QuantityUnit]
"ГрадусыЦельсия"

Entity типа "Chemical" имеет множество свойств, так что дополнительную информацию можно получить, если это необходимо. Например,

res2[
 SelectFirst[#["Type"] == "Chemical" &], 
 "String" /* Interpreter["Chemical"] /* (#["MoleculePlot"] &)]

введите описание изображения здесь

Надеюсь, это поможет.

.

Ответ или решение

Определение сущностей с учетом контекста или отношений

Вопрос о том, возможно ли извлечение конкретной сущности из текста на основе контекста, представляет собой интересную задачу в области обработки естественного языка (NLP). В данном случае, вы хотите идентифицировать температуры из разных предложений и классифицировать их как разные сущности в зависимости от контекста.

Проблема

Рассмотрим два предложения:

  1. "Температура сегодня составляет 35°C."
  2. "Храните таблетки рисперидона при температуре 20°C."

Оба предложения содержат информацию о температуре, однако в первом случае температура относится к погоде, а во втором — к фармацевтическому условию. Для решения данной задачи мы хотим классифицировать первую температуру как сущность "WeatherTemperature" (ТемператураПогоды), а вторую — как "DrugTemperature" (ТемператураЛекарств).

Решение

Для этой задачи можно использовать модели обработки естественного языка, способные учитывать контекст. Один из методов, который вы можете использовать, это библиотека Wolfram Language, включая функции TextCases и TextContents.

1. Использование Wolfram Language

Вы можете использовать функцию TextContents, чтобы извлечь все сущности из предложений. Пример кода:

res1 = TextContents["Температура сегодня составляет 35°C.", TargetDevice -> "GPU"]
res2 = TextContents["Храните таблетки рисперидона при температуре 20°C.", TargetDevice -> "GPU"]

Каждый вызов TextContents вернёт объект Dataset, содержащий информацию о всех обнаруженных сущностях.

2. Фильтрация сущностей

После извлечения сущностей вы можете использовать методы фильтрации для определения типов:

res2[ContainsAll[{"Chemical", "Quantity"}], "Type"]

Это позволит вам установить, что в данном контексте "20°C" относится к "Chemical" и "Quantity". Чтобы извлечь единицы измерения, можно воспользоваться следующим кодом:

res2[
  SelectFirst[#["Type"] == "Quantity" &], 
  "String" /* SemanticInterpretation /* QuantityUnit]

Это вернет "DegreesCelsius" (градусы Цельсия).

3. Извлечение дополнительной информации

Далее, если нужно получить дополнительную информацию о химическом соединении или контексте, вы можете использовать:

res2[
 SelectFirst[#["Type"] == "Chemical" &], 
 "String" /* Interpreter["Chemical"] /* (#["MoleculePlot"] &)]

Это позволит визуализировать молекулу, связанную с конкретным химическим веществом.

Заключение

Таким образом, с помощью функций Wolfram Language, таких как TextContents, вы сможете извлекать и классифицировать сущности в зависимости от их контекста. Это подход подходит для задач, связанных с медиа-информацией и фармацевтикой, а также для более универсальных приложений в области NLP.

Рекомендации по дальнейшему изучению

Для глубокого понимания и улучшения вашей модели с точки зрения обработки контекста, рекомендуется изучить:

  • Архитектуры нейронных сетей, такие как BERT или GPT, которые могут выполнять задачи контекстного анализа.
  • Дополнительные виды NLP-инструментов и библиотек, например, spaCy или NLTK, которые могут быть полезны для предварительной обработки данных.

Если у вас есть дополнительные вопросы или нужны рекомендации по конкретным инструментам, не стесняйтесь обращаться за помощью!

Оцените материал
Добавить комментарий

Капча загружается...