You could use apt-mark, but I recommend debfoster:
sudo apt-get install debfoster
sudo debfoster
This will inspect all installed packages and figure out which ones are keeping the others installed:
texlive-full is keeping the following 161 packages installed:
cm-super cm-super-minimal context doc-base dvipng feynmf
fonts-gfs-artemisia fonts-gfs-baskerville fonts-gfs-bodoni-classic
...
Keep texlive-full? [Ynpsiuqx?], [H]elp:
As you answer "y" to each question (just push Enter to move quickly), debfoster will collect the package list and write them line-by-line to a file. By default this is at /var/lib/debfoster/keepers. It looks like this:
gnome-do
texlive-full
...
I configure debfoster via /etc/debfoster.conf to put this list at /etc/debfoster-keepers and track the file with etckeeper to keep history and backups. The answer here shows how to install a list of packages from a newline-delimited text file:
sudo apt-mark manual $(cat debfoster-keepers)
Note a limitation here, packages you purged have a '-' in front of them. So you want to remove those lines before calling apt-mark.
Even though the debfoster's website says that debfoster is deprecated in favor of aptitude, I prefer debfoster's prompt and simple configuration. It puts you in the middle of your package database and lets you clean things up, making the auto and manual packages more obvious.
Type "h" at the debfoster prompt to explain your options. Type "?" to see the package description. The how-to here might be useful.