Как собирать относительные статьи зависит от названия в Django Python - PullRequest
0 голосов
/ 26 апреля 2018

Я создаю новостной веб-сайт. На странице сведений о новостях я хочу получить (собрать) относительные новости в зависимости от заголовка новости.

Я хочу собрать только те новости, в названии которых есть 3 или 4 одинаковых слова, и не имеет значения, что это за слова.

Например, если в заголовке некоторых новостей есть 3 одинаковых слова «будущее Python AI», и эти новости будут относительными новостями друг для друга.

Кто-нибудь может помочь?

Вот моя модель:

class News(models.Model):

    title = models.CharField(max_length=100, verbose_name='标题') 

Вот мои новости Подробнее:

def newsDetailView(request, news_pk):

    news = get_object_or_404(News, id=news_pk)

    return render(request, "news_detail.html", {
        'news': news,
    })

1 Ответ

0 голосов
/ 26 апреля 2018

Я бы порекомендовал немного другой подход. Я бы добавил тег:

class Tag(models.Model):
    title = models.CharField(max_length=100)

Затем вы можете добавить этот тег к вашей новости:

class News(models.Model):
    title = models.CharField(max_length=100)
    tag = models.ManyToManyField('Tag')

Затем ищите связанные по тегу.

Если вы хотите сделать это автоматически из заголовков, вы можете попытаться проанализировать теги из заголовков при сохранении новости.

Это имеет ряд преимуществ:

  • если заголовок не имеет ключевого понятия, вы можете добавить его в качестве тега
  • если в заголовке есть ключевое слово, которое как-то неактуально, вы можете удалить этот тег
  • масштабируется лучше, чем полное сравнение заголовков

Если вы хотите сопоставить названия, я бы порекомендовал взглянуть на набор инструментов Natural Language: https://www.nltk.org/py-modindex.html

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

...