How could I have improved my attack in this game? I won the game easily because my opponent left a rook hanging in the end. I believe I missed opportunities to build a stronger attack, but I am not sure how I could have done so.

[FEN ""]
1.d4 e5 2.dxe5 Qe7 3.Nc3 Qxe5 4.e4 Nf6 5.Nf3 Qe7 6.Bd3 Qb4 7.O-O Be7 8.e5 Ng4 9.Nd5 Qc5 10.Nxe7 Qxe7 11.Re1 O-O 12.h3 Nh6 13.Nd4 Qh4 14.Re4 Qe7 15.Bxh6 gxh6 16.Qh5 d5 17.Re3 f5 18.Rg3+ Kh8 19.f4 Nc6 20.Nxc6 bxc6 21.Qxh6 Qe6 22.Qxf8+ Qg8 23.Qxg8#
Nf5 would win the queen one way or another because of the threat Qg4+, Qg7++. For instance 16. Nf5 Qe6 17. Qg4+ Qg6 18. Ne7+


Other than that, when you are attacking and the opponent's pieces are undeveloped or discoordinated you really want to open files and not create a closed position. Therefore 17. exd6 e.p. or even better 18. exf6 e.p. seems natural. Then white will bring a rook to e7 and black should be lost soon.