Вопрос или проблема
Есть ли способ получить конкретную сущность на основе контекста, в котором она находится? Например:
Температура сегодня 35°C
.
Храните таблетку рисперидона при 20°C
.
Обе фразы говорят о температуре. В первом предложении я хотел бы, чтобы температура была сущностью “WeatherTemperature”. Во втором предложении я хотел бы, чтобы температура была “DrugTemperature”. Какую модель я мог бы использовать для обучения такого поведения?
С помощью Wolfram Language вы можете использовать TextCases
или TextContents
из руководства по текстовому анализу. Эти функции являются экспериментальными, поэтому они могут немного измениться, прежде чем будут окончательно завершены в будущих версиях. Обе функции имеют опцию TargetDevice
, так что вы можете запускать их на одном или нескольких графических процессорах, если они у вас есть.
Ссылайтесь на руководство по типам текстового содержимого для получения списка сущностей, на которых были обучены эти функции.
Я думаю, что TextContents
является оптимизированным вызовом для TextCases
для нескольких случаев, поэтому я буду использовать только TextContents
ниже.
Используйте TextContents
для нахождения всех обученных сущностей в ваших предложениях.
res1 = TextContents["Температура сегодня 35°C.", TargetDevice -> "GPU"]
res2 = TextContents["Храните таблетку рисперидона при 20°C.", TargetDevice -> "GPU"]
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). В данном случае, вы хотите идентифицировать температуры из разных предложений и классифицировать их как разные сущности в зависимости от контекста.
Проблема
Рассмотрим два предложения:
- "Температура сегодня составляет 35°C."
- "Храните таблетки рисперидона при температуре 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, которые могут быть полезны для предварительной обработки данных.
Если у вас есть дополнительные вопросы или нужны рекомендации по конкретным инструментам, не стесняйтесь обращаться за помощью!