feed questions ask the seeds, not a stem list (V-522)
Whether a turn is about the feeds is a question about meaning, and internal/router/feeds.go was deciding it with three word lists. Their own comments admit the shape: vagueNouns exists because "что нового?" is the most common opener in the language and it matched a feed noun, so a daemon with no feeds block answered a greeting with a configuration status. So topicFeed joins the four subjects in cmd/mavend/topics.go and queryFeeds calls turnIsAbout. The word lists stay as the offline floor, reached through feedFloor, and they are allowed to stay narrow now that they are not the only answer. The category is not a recogniser — a topic is marked by a preposition — so it comes out of the utterance either way, through the new router.FeedCategoryOf. The greeting is handled by the shape rather than by a bail-out list. "что нового" is a topicOther seed, close enough to the feed seeds that a bare "что нового?" cannot clear topicMargin, and a thin call goes to ParseFeedQuery, which declines a vague noun with no topic beside it. Measured on TestONNXTopics, four held-out cases added: 23/23, and no case that passed before it regressed. One seed pair was added during the measurement, because "какие сегодня заголовки" first read as weather — "какая сегодня погода" was the nearest thing in the whole set carrying "сегодня".
This commit is contained in:
@@ -25,6 +25,7 @@ func TestTopicFloorAnswersWithoutSeeds(t *testing.T) {
|
||||
{"что включено в доме?", topicHome, isHomeQuery, true},
|
||||
{"какие устройства в сети?", topicNetwork, isNetworkQuery, true},
|
||||
{"что требует внимания?", topicAttend, isAttentionQuery, true},
|
||||
{"что нового в лентах?", topicFeed, feedFloor, true},
|
||||
{"почему небо синее", topicWeather, isWeatherQuery, false},
|
||||
{"я дома", topicHome, isHomeQuery, false},
|
||||
{"интернет не работает", topicNetwork, isNetworkQuery, false},
|
||||
@@ -86,6 +87,12 @@ func TestONNXTopics(t *testing.T) {
|
||||
{"что требует моего внимания сейчас", topicAttend, isAttentionQuery},
|
||||
{"что не так с базой данных", topicAttend, isAttentionQuery},
|
||||
{"есть что-то срочное на сегодня", topicAttend, isAttentionQuery},
|
||||
{"что нового в ленте за сегодня", topicFeed, feedFloor},
|
||||
{"какие сегодня заголовки", topicFeed, feedFloor},
|
||||
{"что нового про искусственный интеллект", topicFeed, feedFloor},
|
||||
// The greeting. It has to lose to topicOther, or fall thin enough that
|
||||
// ParseFeedQuery — which declines a vague noun with no topic — answers.
|
||||
{"что нового?", topicOther, feedFloor},
|
||||
}
|
||||
|
||||
h := &reactiveHandler{recall: recallWiring{embedder: emb}}
|
||||
|
||||
Reference in New Issue
Block a user